1. 数据交换
不借助第三方变量实现对两个数字的交换。
2.char[0]
内核中,常见char[0]结构体字段的声明。
sizeof(MyData) = 4;
变长数组,可申请一块连续空间,防止内存碎片,嵌入式开发中比较常见。
运用:
struct MyData *p = (struct MyData *)malloc(sizeof(struct MyData) + strlen(str))
可通过 p->data 来操作这个str。
3. 死循环
经常会习惯性写出上述代码,上述代码会形成死循环。
罪魁祸首就是i=0x7f这句,i=0x7f时,执行完循环后i=-128,条件为真,循环继续进行。
i值从 0 - 127, -128 - 0, 0 - 127 周而复始变化。
// 方法一:取消i=0x7f临界条件 for( char i=0; i<0x7f; i++){ } // 方法二:声明为无符号数,推荐 for( unsigned char i=0; i<=0x7f; i++ ){ }