C语言
文章平均质量分 78
Easadon
The one who can beat me is only me.
展开
-
有坑踩一踩 一 除数为0
今天分享一下一个C++程序的坑在填坑之前,大家先比对一下下面三个程序的内容和输出:相信大家从小学开始,老师就教我们,0是不可以作为除数的,那么上面的程序,第一个和第三个为什么可以正常运行,还能输出结果呢?在这里,可能需要涉及到一个小小的知识点,就是double类型或者float类型的0,在内存中的存储,其实并不是真正的0,而已一个极其小的数,所以,当一个整数除以一个极其小的数时,得到的结果就是一个极大数。...原创 2020-09-30 15:10:41 · 346 阅读 · 0 评论 -
Linux下统计程序、函数、代码运行时间
这阵子在做项目,需要从内核态获取数据,但是感觉读取的很慢,所以就想看看进行一次系统调用需要多少时间这时候需要输出一下程序的运行时间或者某一行代码的具体运行时间,看下是不是在系统调用上花了很多时间1. 统计整个程序的运行时间,可以用time命令#time ./testreal 0m2.913suser 0m0.012ssys 0m0.508s使用time命令,后面接可执行程序,便会显示所需时间2.使用clock()进行统计#include<s.原创 2020-08-06 15:32:28 · 2519 阅读 · 0 评论 -
C语言制作编译动态链接库
最近做项目的时候,需要跟人工智能组对接应用接口,要把写好的C函数给Python代码调用,所以打算把写好的代码制作成动态库,给他们直接import,随手记录一点相关知识1.概念程序的函数库一般就是:静态函数库、共享函数库以及动态加载函数库函数库一般来说编译集成了一系列我们要使用的接口(函数),程序源代码编译完成之后有一个链接环节,会通过链接器与使用到的函数库进行链接。静态函数库的话,事实上就是在程序在链接时整个库会一起编译进目标文件中,而动态函数库则不会,只是编译进去一个链接(符号),这种有点原创 2020-07-29 15:02:54 · 1246 阅读 · 0 评论 -
Proteus - 51最小系统 - 流水灯实验
现在开始学习单片机的仿真了,一般用的都是Proteus软件第一次使用,先画了一个单片机最小系统练练手,加上流水灯代码,做一个简单的实验,在此把流程做一个简单的介绍1.建立工程之后,选择相应的设备,所需要的设备如图所示,大家自行添加 2.画图,自己画的原理图如下,模块之间的连线采用线标模式3.把代码烧录,并仿真双击芯片,选择对应的 .hex文件4.效果5.代码附录#include "reg52.h"sbit led0 = P2^0;...原创 2020-05-20 17:52:39 · 1581 阅读 · 0 评论 -
STM32F103C8T6 串口发送字符串
不同开发板的封装可能不同,所以涉及到引脚号的配置,大家应该自行根据芯片资料去设置1.创建一个新工程2.导入对应的包main.c源代码如下:都是比较基础的,关键在USART_GetFlagStatus()函数的使用(大家根据代码做修改,代码已经经过测试的)#include "stm32f10x.h"#include "stm32f10x_usart.h" #de...原创 2020-03-27 16:04:09 · 3513 阅读 · 2 评论 -
struct 内存对齐
struct 是一种复合数据类型,其构成元素既可以是基本数据类型(如 int、long、float 等)的变量,也可以是 一些复合数据类型(如 array、struct、union 等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐, 以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界(natural alignment)条件分配空间。各 个成员按照它们被声明的顺...原创 2019-10-08 15:48:20 · 247 阅读 · 0 评论 -
C语言的union
struct与union的主要区别:struct :当一个数据包需要包含多种不同数据类型的数据时,可以用struct定义一个数据类型,为每个字段在不同的偏移处分配存储空间,遵循内存对齐。union:可定义多个数据类型,但是将所有字段重叠在内存的相同偏移处,也就是各字段共享一块内存,每次只是访问一个字段(可用于将一个数据类型强制转换成另一个类型)union具体认识:1、union中...原创 2019-10-08 15:01:47 · 295 阅读 · 0 评论 -
回调函数
最近在看LWIP,看到了回调函数,似乎没有系统的了解过回调函数,今天就简单学习总结一下1.含义先了解一下什么是回调函数,看一下百科的回答回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或...原创 2019-09-29 12:58:26 · 189 阅读 · 0 评论 -
C语言文件读写函数——fputc()、fgetc()
先准备好两个文件,一个读,一个写读文件内容为: 写文件内容为空: #include<iostream>#include<...原创 2019-09-18 16:24:54 · 347 阅读 · 0 评论 -
x&(x-1)用途
1.判断一个数转换成2进制之后1的个数注:每次进行一次x&(x-1) ,会把x最右边的1变为02.判断一个数是否为2的n次方注:一个数如果是2的n次方,那么应该是最高位为1,其余位为0,所以如果x&(x-1) == 0的话,说明x是2的n次方#include<iostream>using namespace std;void judge(int x...原创 2019-08-30 16:59:54 · 243 阅读 · 0 评论 -
C语言实现文件内容的复制(不带参数的cp命令)
C 语言实现cp命令(不带参数的):即实现一个文件的复制代码实现:#include<stdio.h>#include<stdlib.h>#include<unistd.h> // write 's headfile/*open 's headfile */#include<sys/types.h>#include<sys/s...原创 2019-04-17 15:31:15 · 560 阅读 · 0 评论 -
C语言编写 linux 下的 touch 命令
用C语言实现linux 下 touch 命令的操作:touch:创建文件或者修改文件或目录的时间戳。实现效果:可添加三个参数:-c : --no-create do not create any files 不创建不存在的文件-a : change only the access time 只修改文件的访问时间-m : change only th...原创 2019-04-15 22:48:27 · 3015 阅读 · 0 评论 -
volatile的理解
volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.eg:#include<iostream>using namespace std;int main(){ int i = 0; cout<<i+5; i++; i++; return 0;}在程序的末尾写了两句i+...原创 2018-08-08 10:33:31 · 231 阅读 · 0 评论