欢迎来到天天文库
浏览记录
ID:48661300
大小:2.67 MB
页数:108页
时间:2020-01-18
《C语言第11章_结构体.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十一章结构体与链表主要内容11.1概述11.2定义结构体类型变量的方法11.3结构体变量的引用11.4结构体变量的初始化11.5结构体数组11.6指向结构体类型数据的指针11.7用指针处理链表11.8共用体11.9枚举类型11.10用typedef定义类型概述在实际问题中,一组数据往往具有不同的数据类型。【例】学生信息姓名:字符型性别:字符型年龄:整型学号:整型或字符型成绩:整型或实型。其它:……上述信息作为一个整体,才能完整描述一个学生的信息。概述但是,显然不能用一个数组来存放这一组数据。因为数组中各元素的类型和长度都必须一致,以便于编译系统处理
2、。为了解决这个问题,C语言中给出了另一种构造数据类型——“结构”或叫“结构体”(structure)。它相当于其它高级语言中的记录。概述“结构体”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。结构体既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。11.1结构体类型的定义定义一个结构体类型的一般形式为:struct结构体名{成员表列};【例】structstudent{intnum;//学号charname[20];//姓名cha
3、rsex;//性别intage;//年龄floatscore;//成绩};//分号不要省略结构体名类型名成员名说明也可以用宏定义,使一个符号常量来表示一个结构体类型。【例】#defineSTUstructstudentSTU{intnum;charname[20];charsex;intage;floatscore;};11.2定义结构体类型变量的方法刚才只是定义了结构体类型(相当于int等),要想使用该类型,必须定义相应的变量。有三种方法:先定义结构体类型,再定义结构体变量在定义结构体类型的同时,定义结构体变量直接定义结构体变量方法一:先定义结构体
4、类型,再定义结构体变量【例】structstudent//定义结构体类型{intnum;//学号charname[20];//姓名charsex;//性别intage;//年龄floatscore;//成绩};//分号不要省略//定义结构体变量structstudentstudent1,student2;方法二:在定义类型的同时,定义变量struct结构名{成员表列}变量名表列;【例】structstudent{intnum;charname[20];charsex;intage;floatscore;}student1,student2;方法三:直
5、接定义结构体变量(很少用)struct{成员表列}变量名表列;【例】struct{intnum;charname[20];charsex;intage;floatscore;}student1,student2;【说明】只能用一次说明类型定义和变量定义是不同的概念。※结构体类型只能表示一个结构形式,编译系统并不对它分配内存空间。※只有当某变量被说明为这种类型的结构时,才对该变量分配存储空间。说明类型定义中的成员,也可以是一个结构体变量。structdate{intmonth;intday;intyear;};structstudent{intnum;
6、charname[20];charsex;structdatebirthday;floatscore;}student1,student2;示意图结构体中的成员名,可以和程序中的普通变量同名。11.3结构体变量的引用(输入、输出等)在ANSIC中除了允许具有相同类型的结构变量相互赋值以外,一般对结构变量的使用(包括赋值、输入、输出、运算等),都是通过结构变量的成员来实现的。表示结构变量成员的一般形式是: 结构变量名.成员名(.优先级最高)【例】 student1.num//即第一个人的学号student1.sex//即第一个人的性别11.3结
7、构体变量的引用(输入、输出等)如果成员本身又是一个结构体类型,则必须逐级找到最低级的成员才能使用。【例】student1.birthday.month【注意事项】只能对结构体的各个成员分别引用,不能将一个结构体变量作为一个整体进行引用。【例】student1.num=100;正确printf(“%d,%s”,student1.num,student1.name);正确scanf(“%d,%s”,&student1.num,student1.name);正确printf(“%d,%s,%c,%d,%f\n”,student1);错误【注意事项】相同类型
8、的结构体变量可以相互赋值。【例】student2=student1;对结构体变量的成员,可以像普通变量一样使
此文档下载收益归作者所有