1、十、 结构体与共用体 9.1 结构体char name20;char sex;int age;float score;char addr30; namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节.结构体类型定义描述结构的组织形式 ,不分配内存结构体类型定义的 作用域例 struct student int num;char name20;char sex;int age;float score;char addr30; struct student stu1,stu2; 9.2 结构体变量的定义先定义结构体类型,再定义结构体变量v一般形式: struct 结构
2、体名类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 变量名表列 ;例 #define STUDENT struct studentSTUDENT int num;char name20;char sex;int age;float score;char addr30; STUDENT stu1,stu2; 定义结构体类型的同时定义结构体变量一般形式: struct 结构体名类型标识符 成员名;类型标识符 成员名;.变量名表列 ;例 struct student int num;char name20;char sex;int age;float score;char add
3、r30;stu1,stu2; 直接定义结构体变量一般形式: struct类型标识符 成员名;类型标识符 成员名;.变量名表列 ;例 struct int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; 用 无名结构体 直接定义变量 只能一次说明v结构体类型与结构体变量概念不同l类型 :不分配内存 ; 变量 :分配内存l类型 :不能赋值、存取、运算 ; 变量 :可以v结构体可嵌套v结构体成员名与程序中变量名可相同,不会混淆v结构体类型及变量的作用域与生存期例 struct date int month;int
4、 day;int year;struct student int num;char name20;struct date birthday;stu;num name birthdaymonth day year例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu;num name birthdaymonth day year 9.3 结构体变量的引用引用规则v 结构体变量 不能整体引用 ,只能引用变量 成员v可以将一个结 构体变量赋值给另一个结构体变量v结构体嵌套时 逐级
5、引用成员 (分量 )运算符优先级 : 1结合性 :从左向右引用方式: 结构体变量名 .成员名例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age+;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; printf(“%d,%s,%
6、c,%d,%f,%sn”,stu1); ()stu1=101,“Wan Lin”,M,19,87.5,“DaLian”; ()例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; stu2=stu1; ( )例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;num name birthdaymonth day yearstu1.bir
7、thday.month=12;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; if(stu1=stu2). ( ) 9.4 结构体变量的初始化形式一: struct 结构体名类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 结构体变量 =初始数据 ;例 struct student int num;char name20;char sex;int age;char addr30; struct student stu1=112,“Wang Lin”
8、,M,19, “200 Beijing Road”;形式二:struct 结构体名类型标识符 成员名;类型标识符 成员名;.结构体变量 =初始数据 ;例 struct student int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 形式三:struct类型标识符 成员名;类型标识符 成员名;.结构体变量 =初始数据 ;例 struct int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;