基础:
1.赋值:
结构体的赋值,是值传递不是引用传递。
结构体(struct):
1.结构体的典型定义:
typedef struct tagSTUDENT{
int id;
char name[20];
bool sex;
}STUDENT,*PSTUDENT;
struct tagSTUDENT1{
int id;
char name[20];
bool sex;
}initStudent = {123,"222",true};
2.typedef:利用此关键字可以重命名一个类型(包括复合类型),降低引用和定义之间的耦合度。
3.结构体内存计算规则:
(1)复杂类型的内存分配,前N个变量所占内存必须被第N+1个变量整除。如果第N+1个不能整除,就把内存补到第N个上(2)所有的变量占的内存总和应该可以被最大的变量整除,把内存补到最后一个变量后。
在定义复杂类型的时候,需要考虑变量的先后顺序,来确保浪费的内存最少。
4.结构体里面的变量个数:结构体的地址,与它的第一个子的地址是一样的。所以,如果按照地址来划分对象个数,结构体的对象个数为其子的个数。联合体对象只有一个,因为它的数据保存在同一块内存当中。
联合体(union):联合体中只有一个子起作用,所以必须注意最后一个被赋值的是谁。
1.联合体的定义:
union tagAny{
char c;
short n;
int i;
float f;
double d;
}
2.联合体内存计算:联合体的内存大于或等于其中最大的一个子的长度(并且保障,长度为所有子的整数倍)。