资源描述:
《第11章结构体与共用体.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理勿做商业用途本章重点:ﻩ●结构体类型及其变量的定义、引用和初始化●结构体数组和指向结构体数组的指针●链表处理●共用体和枚举类型第11章结构体与共用体§11.1概述一、数据类型的扩充1.基本类型intfloat doublechar数组 指针2.自定义类型(结构体类型)C语言还允许自定义类型,如结构体等。定义结构体的目的是将不同类型的数据组合成一个有机的整体,以便于引用。二、结构体类型的定义1.格式struct结构类型名{数据类型数据项1;数据类型数据项2;......数据类型数据项n;}; complex如:structstudent{int num;char name[20
2、];charsex;int age;char addr[30];};个人收集整理勿做商业用途2.说明1)结构体名即自定义类型名2)成员和域的概念3)注意不要丢了分号§11.2定义结构体类型变量的方法用户自己定义的结构体类型,与系统定义的标准类型(int、char等)一样,可用来定义结构体类型的变量。一、先定义结构体类型,再定义结构体类型变量1.举例structstudent{int num;char name[20];charsex;intage;char addr[30];};struct students1,s2;//定义了两个变量s1,s22.说明1)标准方式,推荐使用2)注意格式,
3、不能少了struct3)有时用下列方式,也是可以的#define STUDENTstructstudentSTUDENTs1,s2;二、在定义结构体类型的同时定义结构体类型变量1. 举例struct student{int num;char name[20];char sex;个人收集整理勿做商业用途intage;charaddr[30];}s1,s2;2.说明1)注意格式分号的位置2)应尽可能的使用第一种标准格式三、直接定义结构体类型变量1. 举例struct{intnum;charname[20];charsex;int age;charaddr[30];}s1,s2;2.说明1)如果
4、后面再不使用此类型时,可这样定义2)理解即可,应尽可能的使用第一种标准格式四、关于结构体类型及其变量的几点说明1.请正确区分结构体类型和结构体类型的变量两个概念2. 结构体类型中的成员变量也可以是结构体类型的如:struct student{int num;charname[20];charsex;int age;struct date birthday;char addr[30];};structdate{个人收集整理勿做商业用途intmonth;int day;intyear;};structstudents1,s2;(1)§11.3结构体变量的引用一、举例[例1]读下列程序,然
5、后说出结果。main(){structstudent{int num;charname[20];charsex;intage;charaddr[30];};structstudents1;s1.num=1;strcpy(s1.name,“hd”);s1.sex=’f’s1.age=24s1.addr=“zy.gs.cn”clrscr()printf(“%d”, s1.num);printf(“%sn”, s1.name);printf(“%c”, s1.sex);printf(“%d”,s1.age);printf(“%s\n”,s1.addr);getch();}个人收集
6、整理勿做商业用途二、说明1)不能将一个结构体变量作为一个整体进行赋值、运算和输出;只能对其各个成员分别赋值,运算和输出;引用形式为:结构体变量名.成员名。“.”是成员运算符,在所有运算符中优先级最高,也即,应把s1.num当作一个整体来看待。S1={1,“hd”,’f’,24,“zy”}ﻩ(错)scanf(“%d,%s,%c,%d,%s”,&student1);(错)printf(“...”,student1); ﻩ(错)2)若成员本身又属一个结构体类型,只能对最低级的成员进行赋值或存取以及运算。如:student1.birthday.year 3)成员名可以与程序中的变量名相同,二者不
7、代表同一对象。4)可以引用成员的地址,也可以引用结构体变量的地址,如scanf(“%d”,&student1.num);printf(“%o”,&student1);5)请思考,一个结构体类型的变量在内存中占中字节?§11.4结构体变量的初始化和其它变量一样,可以在定义时对结构体变量初始化一、举例[例1]读下列程序,然后说出结果。main(){structstudent{int num;charname[20];char