资源描述:
《C课件-结构体数组做函数参数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十讲第十章结构体和共用体结构体类型的定义结构体类型变量的定义结构体类型变量的初始化和引用结构体数组10.1结构体问题数组能方便的处理一组同类型的数据,那么对一组不同类型的数据如何管理和引用呢?——使用结构体。例:学生姓名,性别,年龄,身高,体重等,……结构体属于构造类型,在内存中占据连续的存储空间。C语言本身没有结构体类型,用户要做两项工作:1)定义结构体类型:描述结构体成员及其类型;2)定义结构体变量:为结构体成员分配存储空间。10.1.1结构体类型的定义结构体类型的定义一般格式struct结构体名{类型名1成员名1;类型
2、名2成员名2;······类型名n成员名n;};例:structstudent{intnum;charname[10];charsex;floatscore[4];};structdate{intyear,month,day;};structdate{intyear;intmonth;intday;};例:10.1.1结构体类型的定义结构体类型定义的格式说明:struct:关键字,是定义结构体类型的标志。结构体名:标识符,其命名规则同变量名。struct结构体名:结构体类型名,作用等同于int、float等关键字,用于定义结构
3、体变量。类型名1~n:说明了结构体成员的数据类型。成员名1~n:用户定义的一个或多个结构体成员的名称,其命名规则同变量名。多个同类型的成员彼此间用逗号分隔。10.1.2结构体类型变量的定义注意:结构体类型的定义只是指出了该结构体的组成情况,系统并不会为它分配实际的存储单元。应在定义了结构体类型以后,再定义该结构体类型的变量(简称结构体变量),以便在结构体变量中存放具体的数据。结构体变量的定义方式有三种:先定义结构体类型,再定义结构体变量。在定义结构体类型的同时定义结构体变量。直接定义结构体变量。10.1.2结构体类型变量的定义
4、31个字节stu1stu2numname[10]sexscore[0]score[1]score[2]score[3]200101ZhangHuaM78.581.090.080.5200102LiuMingF81.578.088.091.0stu1和stu2的存储形式为:方式I.先定义结构体类型,再定义结构体变量structstudent{intnum;charname[10];charsex;floatscore[4];};structstudentstu1,stu2;例:10.1.2结构体类型变量的定义structdate
5、{intyear;intmonth;intday;};structdatatoday,tomorrow;yearmonthday20125162012517todaytomorrow12个字节today和tomorrow的存储形式为:例:10.1.2结构体类型变量的定义方式II.在定义结构体类型的同时定义结构体变量。structstudent{intnum;charname[10];charsex;floatscore[4];}stu1,stu2;structdate{intyear;intmonth;intday;}toda
6、y,tomorrow;例:10.1.2结构体类型变量的定义方式III.定义无名结构体变量struct{intnum;charname[10];charsex;floatscore[4];}stu1,stu2;struct{intyear;intmonth;intday;}today,tomorrow;例:10.1.2结构体类型变量的定义关于结构体的说明:1、类型与变量是不同的概念,应注意区分。系统可以对变量赋值、存取、运算,而类型则不能。编译时,系统只为变量分配存储单元,而类型则不分配。10.1.2结构体类型变量的定义2、不同
7、结构体的成员名可以相同,不互相冲突。structdate{intyear,month,day;};structBook{chartitle[50],writer[20],publisher[50];intyear,month;};intyear,month,day;10.1.2结构体类型变量的定义3、结构体的成员可以是基本类型和构造类型。structdate{intyear,month,day;};structstudent{intnum;charname[10];charsex;structdatebirthday;floa
8、tscore[4];}stu1,stu2;structstudent{intnum;charname[10];charsex;structdate{intyear,month,day;}birthday;floatscore[4];}stu1,stu2;10.1.2结构体类型