结构体 (structures )
- 用结构体类型可以构造出对应的数组类型,指针类型,引用类型……
结构体内部成员不能是自身 (无法计算出储存空间)
struct node {
node member; // 这样是不可以的 计算储存空间时会无限递归
};struct node {
node * p1; // 这样就可以,因为指针的存储空间固定。
};- 提供了整体赋值操作。初始化操作。
- 结构体的大小 (存储空间) :
字对齐 :
- 自身对齐 自身占用的储存空间 地址的值能整除储存空间的时候才开始存储
- 指定对齐 指定占用的储存空间 不定义就是固定的 结束的时候也必须整除这个数
struct node {
char b;int a;short c;
};// 12
struct node2 {
int a;
char b;
short c;
}; // 8
// 这两个储存空间不同
void *空指针
与 void 不同 void * 默认可以返回任何指针类型,或者接受任何类型的参数。一般
用于函数的返回值和函数的形参 , 可以用空指针使得一个函数适用于所有的所有的类型