结构体和联合体的知识总结

时间:2023-02-10 19:54:45

1、结构体


概念:存储一个可变的数据,使用变量处理。


      存储同一类型的批量,使用数组。


      不同类型的数据集合,使用结构体。


struct 结构体名{


成员变量(类型名 变量名:int a);


}[结构体变量1,结构体变量2];


定义结构体类型的变量:


struct 结构体名 变量名;


初始化结构体变量的方法


1)定义的同时初始化


struct 结构体名{


成员变量(类型名 变量名:int d);


}a,b={...赋值列表...};


2)使用结构体变量初始化


a.xxx=xxx;   b.xxx=xxx;


3)定义结构体变量时初始化


Struct 结构体名 a={...赋值列表...};


结构体引用方法:使用结构体变量.成员变量


e.g: stu.stuid;


    一种新的数据结构,内存存放是连续的。


     使用指向结构体的指针进行访问。


stuct 结构体名 *指针名;


struct student *p;


结构体指针指向结构体变量:


Struct student stu;  p=&stu;


使用结构体变量名作为函数的参数--->值传递


Fun(struct student stu){  }


使用指向结构体的指针作为函数的参数


Fun(struct student *stu){   }


Fun(&stu1);调用


注意:对类型是不分配空间的,只对变量分配空间。


表示结构变量成员的一般形式


结构变量名.成员名


int nNo = stBoy1.nNo;


嵌套结构变量成员的表示形式


结构变量名.成员名.成员名


int nMonth  = stBoy1.stBirthday.nMonth;


2、联合体(共用体)


概念:使几个不同的变量共享同一段内存的结构称为“共用体”类型的结构。


1)联合体定义:


union 联合体名{


成员变量--(成员类 成员名)


}定义联合变量;


定义联合变量:


union 联合体名 联合体变量名;


联合体变量名.成员名1=xxx;


联合体变量名.成员名2=xxx;


成员名2就覆盖了成员名1的值


2)联合体的每个成员的首地址都是相同的


3)联合体占用内存空间:


<1>得到容纳成员变量中“最宽”的值。


<2>长度能够整除所有的成员变量的类型。


访问联合体成员变量


union people peo;


1>peo.成员变量名


2>union people *p = &peo;


P-->成员变量名


结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有其自己的内存单元。而共用体变

量所占的内存长度等于最长的成员的长度。(需要考虑对齐)


联合体和结构体体可以互相嵌套。