资源描述:
《C语言-第10章结构体与公用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章结构体与共用体本章要点结构体的概念结构体的定义和引用结构体数组10.1定义一个结构体的一般形式定义一个结构体的一般形式为:struct结构体名{成员表列};对每个成员也必须作类型说明,其形式为:类型说明符成员名;例如:structstu{intnum;//学号charname[20];//姓名charsex;//性别floatscore;//成绩};10.2结构体变量的说明说明结构体变量有以下三种方法。structstu{intnum;charname[20];charsex;floatscore;}
2、;structstuboy1,boy2;structstu{intnum;charname[20];charsex;floatscore;}boy1,boy2;struct{intnum;charname[20];charsex;floatscore;}boy1,boy2;1.三种方法中说明的boy1,boy2变量都具有下图所示的结构。2.成员也可以又是一个结构体类型,即构成了嵌套的结构体。structdate{intmonth;intday;intyear;};struct{intnum;charname
3、[20];charsex;structdatebirthday;floatscore;}boy1,boy2;3.类型定义符typedefC语言允许由用户为数据类型取“别名”。类型定义符typedef即可用来完成此功能。例如:typedefintINTEGER以后就可用INTEGER来代替int作整型变量的类型说明了。例如:INTEGERa,b;它等效于:inta,b;typedef定义的一般形式为:typedef原类型名新类型名例如:typedefstruct{charname[20];intage;cha
4、rsex;}STU;定义STU表示stu的结构体类型,然后可用STU来说明结构体变量:STUbody1,body2;又如:表示二维坐标平面上的一个点(x,y)typedefstruct{floatx;floaty;}POINT;接下来定义两个点p1,p2:POINTp1,p2;此语句即可实现。10.3结构体成员变量的表示方法表示结构体变量成员的一般形式是:结构体变量名.成员名例如:boy1.num即第一个人的学号boy2.sex即第二个人的性别如果成员本身又是一个结构体则必须逐级找到最低级的成员才能使用。例
5、如:boy1.birthday.month即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。结构体成员运算符(优先级别最高)10.4结构体变量的赋值结构体变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。结构体变量不能进行整体赋值。相同类型的结构体变量之间可以赋值。如:typedefstruct{floatx;floaty;}POINT;POINTp1,p2;p1={3.5,6};//整体赋值发生错误。但可以给成员变量赋值。如:p1.x=3.5;等。也可以结构体变量之间赋值.如:p2
6、=p1;【例10.1】给结构体变量赋值并输出其值。#includevoidmain(){structstu{intnum;char*name;charsex;floatscore;}boy1,boy2;boy1.num=102;boy1.name="Zhangping";printf("inputsexandscore");scanf("%c%f",&boy1.sex,&boy1.score);boy2=boy1;printf("Number=%dName=%s",boy2.n
7、um,boy2.name);printf("Sex=%cScore=%f",boy2.sex,boy2.score);}10.5结构体变量的初始化【例10.2】对结构体变量初始化。各成员变量的存储如图所示。#includevoidmain(){structstu/*定义结构体*/{intnum;char*name;charsex;floatscore;}boy2,boy1={102,"Zhangping",'M',78.5};/*boy1初始化*/boy2=boy1;/*结构体变量
8、赋值*/printf("Number=%dName=%s",boy2.num,boy2.name);printf("Sex=%cScore=%f",boy2.sex,boy2.score);}10.6结构体数组10.6.1结构体数组的定义1.先定义结构体,再说明结构体数组。structstu{intnum;char*name;charsex;floatscore;};structstuboy[5]