1.strerror(errno要包含头文件errno.h)
2.perror头文件为stdio.h
3.一些字符函数
4.字母大小写转换函数
5.memmove理论上是memcpy的升级版(可以自己拷贝自己)。
6.匿名结构体类型在类型创建好了之后直接创建变量,只能用一次。两个完全相同的匿名结构体类型,编译器认为他们的类型是不一样的。
7.结构体可以乱序初始化。
struct 结构体名字 变量名 = {.结构体内的变量名 = 赋的值, …};
8.结构体的内存对齐。
a.结构体的第1个成员,对齐到结构体在内存中存放位置的零偏移处。
b.从第2个成员开始,每个成员都要对齐到一个对齐数整数倍数。(数组按每个元素大小的计算)(对齐数:结构体成员的自身大小和默认对齐数的较小值,vs中默认对齐数是8,gcc中没有默认对齐数)
c.结构体的总大小,必须是所有成员的对齐数中最大的整数倍。(数组按每个元素大小的计算)(包含嵌套结构体成员中的对齐数)
d.如果结构体中嵌套了结构体成员,要将嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处。
9.offsetof(struct s1, 结构体内的变量);
返回该变量的偏移数。
头文件stddef.h
本质上是个宏。