结构体
结构体的定义
结构体是一些值的集合,这些值成为成员变量。
用代码去描述学生的属性:
char name[100];
int age;
int gender;
char id[100];
float height;
如果数据类型一样,就可以使用数组来组合信息,
但是,上面描述学生时,信息所对应的数据类型并不相同,
所以使用C语言中的,自定义数据类型,即为结构体。
struct student{
char name[100];
int age;
int gender;
char id[100];
float height;
}
//成员列表
char name [128];
int age;
float height;
char id[256];
}stu,stu001,stu003;
//全局变量,默认进行初始化{“neme:"",age:0,height:0,id:""}
int main()
{
//声明变量
//局部变量 在使用之前必须初始化
struct Student stu1 = {"zhangsan",13,1,76,"s10001"};
struct Student stu2 = {"lisi",15,1,44,"s10002"};
//struct Student* p = &stul;
printf("%zd",sizeof(p));
//如何访问结构体成员,1,操作符 变量名。属性名 如:stul.id
2, 结构体变量的指针 ——>成员 如p->name
return 1;
}
//自引用
5,结构体内存对齐
如何计算?首先得掌握结构体的对齐规则 1,第一个成员在与结构体变量偏移量为0的地址处 2.其它成员变量要对齐到某个数字[对齐数]的整数倍的地址处 对齐数=编译器默认的一个对齐数与该成员大小的较小值。 T 3vs中默认值为8(gcc没有提供默认对齐数) 4,如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
结构体的传参
把结构体当做一个变量传入函数中,在结构体传参的时候,传结构体的地址。