一些常用函数
函数strtok
函数strcmp与strncmp
函数strchr与strrchr
结构体
结构体声明,一定是在全局变量或者在头文件,声明结构体不占用空间
结构体定义和初始化
-
由于结构体内部拥有多个不同类型的成员,因此初始化采用与类似列表方式
-
结构体的初始化有两种方式:①普通初始化;②指定成员初始化。
-
为了能使用结构体类型的升级迭代,一般建议采用指定成员初始化。
CPU字长(以4字节为单位cpu32位)
地址对齐(左下--->右上 代表低地址到高地址)
普通变量的m值
32位 m=4;在32位里出现double,m变为8;
64位 m=8;
__attribute__((packed)); //一字节对齐
联合体(共用体)基本概念(联合体中的各个成员共用同一块内存,因此联合体也称为共用体 )
1.由于联合体特殊的存储特性,不管怎么初始化和赋值,最终都有且仅有一个成员是有效的。
2.联合体一般不会单独使用,而是以结构体的成员方式存在,用来表示互斥的效果,即一次只能赋予一个值用来表示某种互斥属性,比如学生选修课
枚举
枚举数据最重要的作用,是使用有意义的单词,来替代无意义的数字,提高程序的可读性。
宏
宏的作用:
-
使得程序更具可读性:字串单词一般比纯数字更容易让人理解其含义。
-
使得程序修改更容易:修改宏定义,即修改了所有该宏替换的表达式。
-
提高程序的运行效率:程序的执行不再需要函数切换开销,而是就地展开。
条件编译的使用场景
控制调试语句:在程序中,用条件编译将调试语句包裹起来,通过gcc编译选项随意控制调试代码的启停状态。例如:
以上语句中,-D意味着 Define,MACRO 是程序中用来控制调试语句的一个宏,如此一来就可以在完全不需要修改源代码的情况下,通过外部编译指令选项非常方便地控制调试信息的启停。
标准预定义宏