资源描述:
《C语言程序设计基础与实训教程 第10章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章结构体与共用体第页主要内容概述定义结构体类型变量的方法结构体变量的引用结构体变量的初始化结构体数组指向结构体类型数据的指针用指针处理链表共用体枚举类型用typedef定义类型第页10.1概述前面的章节已经介绍了基本类型的变量(如整型、实型、字符型变量等),也介绍了一种构造类型——数组,数组中的各元素是属于同一个数据类型的。但是,在解决实际问题时,只有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是互相联系的。第页10.2定义结构体类型变量的方法前面介绍了指定一个结构体
2、类型,它相当于一个模型,其中并无具体数据,系统对它也不分配实际内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。可以采用以下3种方法定义结构体类型变量。第页10.2定义结构体类型变量的方法先声明结构体类型再定义变量名在声明类型的同时定义变量直接定义结构体类型的变量第页10.2定义结构体类型变量的方法直接定义结构体类型的变量其一般形式为:struct{成员表列}变量名表列;即不出现结构体名。关于结构体类型,有几点要说明:第页10.2定义结构体类型变量的方法类型与变量是不同的概念,不要混淆。只
3、能对变量赋值、存取或运算,不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,要对变量分配空间。对结构体中的成员可以单独使用,它的作用与地位相当于普通变量。关于的成员的引用方法将在10.3节中介绍。成员也可以是一个结构体变量成员名可以与程序中的变量名相同,二者不代表同一对象。第页10.3结构体变量的引用在定义了结构体变量以后,当然可以引用这个变量,但应遵守以下规则。不能将一个结构体变量作为一个整体进行输入输出。例如,已定义student1和student2为结构体变量,并且它们已有值。不能这样引用:printf("%d,%
4、s,%c,%d,%f,%s",student1);只能对结构体变量中的各个成员分别进行输入和输出。引用结构体变量中成员的方式为:结构体变量名.成员名第页10.3结构体变量的引用如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级成员。只能对最低一级的成员进行赋值或存取以及运算。例如,对上面定义的结构体变量student1,可以这样访问各成员:student1.numstudent1.birthday.month第页10.3结构体变量的引用对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定
5、可以进行的运算)。例如:student2.score=student1.score;sum=student1.score+student2.score;student1.age++;++student1.age;由于“.”运算符的优先级最高,因此student1.age++是对student1.age进行自加运算,而不是先对age进行自加运算。第页10.3结构体变量的引用可以引用结构体变量成员的地址,也可以引用结构体变量的地址。如:scanf(“%d”,&student1.num);(输入student1.num的值)printf("
6、%o",&student1);(输出student1的首地址)不能用以下语句整体读入结构体变量:scanf("%d,%s,%c,%d,%f,%s",&student1);结构体变量的地址主要用于作函数参数,传递结构体的地址。第页10.4结构体变量的初始化和其他类型变量一样,对结构体变量可以在定义时指定初始值。第页10.4结构体变量的初始化【例】对结构体变量初始化。main(){structstudent{longintnum;charname[20];charsex;charaddr[20];}a={89031,"LiLin",'M'
7、,"123BeijingRoad"};printf("NO.:%ldname:%ssex:%caddress:%s",a.num,a.name,a.sex,a.addr);}程序运行结果如下:NO.:89031Name:LiLinsex:Maddress:123BeijingRoad第页10.5结构体数组定义结构体数组结构体数组的初始化第页10.5.1定义结构体数组和定义结构体变量的方法相似,只需说明其为数组即可。如:structstudent{intnum;charname[20];charsex;intage;fl
8、oatscore;charaddr[30];};structstudentstu[3];第页10.5.1定义结构体数组以上定义了一个数组stu,其元素为structstudent类型的数据,数组有3个元素。也可以直接定义