
C
豆浆D油条
嵌入式专业毕业,喜欢研究底层和算法。追求高效性能
展开
-
关于IcmpSendEcho2的使用和回调问题
IcmpSendEcho2的使用和回调问题原创 2023-02-17 16:13:10 · 1191 阅读 · 1 评论 -
C/C++一个很好用的关键字——sizeof
众所周知,sizeof是用来求变量或者数据类型所占用的内存大小。但一般人的写法都是sizeof(数据类型),很少有人写sizeof(变量);sizeof可也以用来求数组长度的,不管是求一维数组还是二维数组,但它不能用于求数组里面的字符串长度。而且sizeof很多情况下都是在编译时完成,此时sizeof得出的结果是常量,所以编译时完成的sizeof,并不会额外增加程序运行时的负担。求变量长度。可以用于C++的模板函数和auto关键字修饰的变量。//源.cpp#include <stdio.h&原创 2022-03-26 18:21:26 · 989 阅读 · 0 评论 -
为什么浮点类型变量不能直接比较?而是用一个范围?
并不是不可以,而是不推荐,因为容易出错。从下面的例子中能看出(true打印出来是1,false打印出来是0),由于浮点数有精度的问题,数值结果很容易出现偏差。f2 - 81.2不等于0是因为,f2是float类型的,字面量81.2默认是double,所以由于81.2到float类型已经精度不准了,减去精准的81.2得到的结果肯定也不准了。f1/5=f3也是一样的道理,但由于f2和f3都是81.2转过去的,所以这两是相等的,f3跟81.2是不相等。==0也是一样的道理。如果要比较,结合数据类型和自己要求的精度原创 2020-10-24 00:47:36 · 1386 阅读 · 0 评论 -
自己给自己写了一个有趣的BUG,数组越界越到程序自身的安全空间
当初为了把0x0-0xFF打乱,因为char和unsigned char保存到内存的值都是一样的,都是十六进制(也就是-1的char和255的unsigned char做一个字节的比较时是相等的,因为十六进制都是0xFF),只是表示出来不一样而已,所以就没用unsigned char。结果就出现了上面BUG,当value=-23~-21时才会这样,count的值大于了256,跳出了循环。原因:打三个地址出来一看,count的地址(0x4ffc28 )- flag(0x4ffc40)等于十进制的-24,.原创 2020-06-11 16:00:37 · 300 阅读 · 0 评论 -
C语言基础数据类型的隐式转换、截断和解析问题
我原创 2019-03-12 16:59:56 · 8651 阅读 · 0 评论 -
C语言 指针变量及相关的知识
指针是一个特殊的变量,因为他的运算方式和所代表的东西跟基础数据类型不一样。指针变量存储的是内存单元的地址编号,这地址就跟我们家门口的门牌号一样。当用解引用运算符(*)的时候,CUP就会到对应的内存单元取内容,至于取多少,主要看定义时定义的是什么类型的指针,也可以用下标操作符([])。原创 2019-03-24 15:03:16 · 475 阅读 · 0 评论 -
C语言数组
void main(){ int a[10] = { 0,1,2,3,4,5,6,7,8,9 }; //a代表的是数组的首地址(首元素的地址),其类型是int *。 //&a = 10; //&a其实就等同于一个常量,常量是不能做左值的。比如数组a的首地址是0x1234,那么&a就是代表0x1234,所以0x1234=10是不对的。 //正确操作应该如下 int...原创 2019-06-08 11:57:29 · 1166 阅读 · 0 评论 -
C语言strcpy和memcpy
C语言strcpy和memcpy原创 2019-08-02 11:16:25 · 453 阅读 · 0 评论