一、结构
结构类型的定义
程序员可以使用结构自定义类型,定义格式:struct 结构名 { 成员表列 }变量名表列;
注意:定义结构时不要忘了最后的分号。
“结构名”和“变量名表列”可省略,初学者在使用结构时,一般可省略后面的变量名列以便于理解。
如:struct student { char name[20];/*姓名*/ char sex[3];/*性别*/ int age;/*年龄*/ }
定义了一个结构student,中间是此结构的3个成员变量,它们不可以赋初值,因为结构是一种类型,只有在定义此结构类型的变量时才可赋值,最后的分号不可少。
2. 结构变量的定义和使用
定义格式:
struct 结构名 变量名;
如:
struct student stu;
此处的stu就是一个student类型的变量,可以在定义的时候初始化:
struct student stu={"张三","男",23};
也可以在定义结构的时候定义结构变量并赋值,如:
struct student
{
char name[20];/*姓名*/
char sex[3];/*性别*/
int age;/*年龄*/
}stu={"张三","男",23};
结构变量的初始化必须根据成员变量的类型逐个赋值。
结构变量不能直接引用,必须使用 . 号对结构中的成员变量进行操作,如:
stu.age=18;/*赋值*/
printf("%d",stu.age);/*打印*/
二、联合
对于联合类型的变量,只能使用其中一个成员变量,并且只有最后一次设置的成员变量有效。
联合的定义格式与结构差不多,只是把struct改成union。
- 只能对联合的第一个成员进行初始化。
- 联合变量的地址和它的各成员都是同一地址。
- 联合和结构之间可以嵌套定义。