资源描述:
《结构体与共用体-枚举》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章结构体与共用体2本章主要内容结构体类型与结构体变量结构体数组结构体变量与函数*共用体枚举类型typedef定义类型结构体变量与指针*35.1结构体定义、引用及赋值学号姓名性别年龄成绩地址10010LiJunM1785.5FuJianintnum;charname[20];charsex;intage;floatscore;charaddress[50];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddress[50];
2、};(1)结构体定义structstudent{intnum;charname[20];charsex;intage;floatscore;charaddress[50];};结构体类型名结构体各成员定义结构体类型大括号外要加分号structstudentstu1,stu2;系统不为结构体类型的定义开辟内存单元,只当定义了结构体变量后才会为变量分配相应大小的内存单元。stu1和stu2在内存占几个字节?先声明结构体类型再定义结构体变量structstudent{intnum;charname[20];char
3、sex;intage;floatscore;charaddress[50];};structstudentstu1,stu2;声明结构体类型的同时定义结构体变量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddress[50];}stu1,stu2;直接定义结构体变量struct{intnum;charname[20];charsex;intage;floatscore;charaddress[50];}stu1,stu2;这
4、种不带结构体类型名的定义,是无法重用的。说明:类型与变量名是不同的概念;对结构体的成员的使用与普通变量类似;结构体的成员也可以是另一个结构体;structstudent{intnum;charname[20];charsex;structdatebirthday;floatscore;charaddress[50];};成员名可以与程序中的其它变量同名。structdate{intyear;intmonth;intday;}birthday;(2)结构体变量的引用structstudent{intnum;ch
5、arname[20];charsex;intage;floatscore;charaddress[50];}stu1,stu2;stu1.num=10021;strcpy(stu1.name,"Xiaohua");stu1.age=18;stu1.score=85.5…结构体变量的引用:结构体变量名.成员名结构体变量的成员在引用时和其同类型的普通变量引用方法一致。structstudent{intnum;charname[20];charsex;structdate{intyear;intmonth;intd
6、ay;}birthday;floatscore;charaddress[50];}stu;…stu.birthday.year=2000;…结构体变量的成员又是结构体时,应一层层找到最低一级的成员。(3)结构体变量的初始化变量初始化具体形式:struct结构体类型名{类型说明符1成员名1;类型说明符2成员名2;…类型说明符3成员名3;}变量名列表={初始化数据};(3)结构体变量的初始化例5-1对结构体变量初始化。voidmain(){structstudent/*定义结构体*/{intnum;charnam
7、e[25];charsex;intage;floatscore;charaddr[35];}student2,student1={102,"hangping",'M',18,85.5,"shanghai"};student2=student1;printf("Number=%dName=%s",student2.num,student2.names);printf("Sex=%cScore=%f,student2.sex",student.scores);}135.2结构体数组structst
8、udent{intnum;charname[20];charsex;intage;floatscore;charaddress[50];}stu[3];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddress[50];}stu;a.结构体数组定义numnamesexagescoreaddress1001LinNin