一、结构体和共用体的定义
结构体关键字为struct,共用体关键字为union数组
/** * 定义一个person的结构体,要';'结束 */ struct person{ char name[20]; //姓名 char sex[10]; //性别 int age; //年龄 float height; //身高 float weight; //体重 }; /** * 定义一个people共用体 */ union people{ char name[20]; int age; };
二、结构体和共用体的声明markdown
结构体和共用体的三种声明是一致的:ide
void mian(){ //结构体的声明 //通常声明 struct person p1; union people pe1; //直接声明 struct person{ char name[20]; int age; }p2; union people{ char name[20]; int age; }pe2; //匿名声明,此方式该结构体只能声明一次 struct{ char name[20]; int age; }p3; union{ char name[20]; int age; }pe3; }
三、结构体和结构体变量的使用函数
3.一、对结构体成员的使用指针
/** * 定义一个结构体,并声明结构体对象p1 */ struct person{ char name[20]; int age; }p1; void main(){ //初始化结构体 p1 = {"zack", 20}; //访问结构体成员的三种方法 //一、结构体变量名.成员名 p1.name printf("%s", p1.name); //二、指针变量名->成员名 //三、(*指针变量名).成员名 }
四、结构体变量的初始化code
前面已经了解了如何赋值,而后弄一个稍微复杂一点的结构体赋值:对象
/** * 定义一个生日的结构体 */ struct birthday{ int year; int month; int day; }; /** * 定义一个person结构体,以结构体birthday做为成员变量 */ struct person{ char name[20]; int age; struct birthday date; }p; void main(){ //初始化person,若是成员变量为结构体,使用{}赋值 p = {"zack", 20, {1999, 12, 1}}; }
五、结构体数组定义及初始化内存
/** * 定义结构体并声明数组 */ struct person{ char name[20]; int age; }p[2]; void main(){ //初始化结构体数组 p = {{"zack", 20}, {"Rudy", 19}}; }
六、结构体和函数get
结构体能够做为函数参数it
/** * 定义一个结构体 */ struct person{ char name[20]; int age; }; /* 声明一个函数 */ void demo(struct person p); void main(){ //初始化结构体 struct person p = {"zack", 20}; //将结构体做为参数传入demo函数 demo(p); } /** * 定义一个函数,接收结构体,并把结构体信息输出 */ void demo(struct person p){ printf("姓名:%s\n", name); printf("年龄:%d", age); }
七、结构体和共用体的区别
结构体在建立时,按照结构体成员变量占的内存分配。而共用体则按照共用体中,所占内存最大的变量分配内存。因此,共用体变量只能单个使用,而结构体能够全部变量一块儿使用。
https://mp.weixin.qq.com/s/THf1-T8A2RaoF1xIQ4No1A