C语言-第7章结构体(成)

C语言-第7章结构体(成)

ID:44251031

大小:1.37 MB

页数:69页

时间:2019-10-20

C语言-第7章结构体(成)_第1页
C语言-第7章结构体(成)_第2页
C语言-第7章结构体(成)_第3页
C语言-第7章结构体(成)_第4页
C语言-第7章结构体(成)_第5页
资源描述:

《C语言-第7章结构体(成)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7章结构体与共用体Contents7.1结构体7.2结构体数组7.3指向结构体类型数据的指针7.4结构体与链表7.5共用体7.6枚举7.7用typedef定义类型7.1结构体前面已介绍过数组,它存储的是一组相同类型的数据。但在实际问题中,一组数据往往具有不同的数据类型。例如,一个学生的信息包括学号、姓名、性别、年龄和成绩等。这些数据的类型各不相同:姓名为字符型,学号为整型或字符型,性别为字符型,年龄为整型,成绩为实型,这显然不能用一个数组存放。为了解决这一问题,C语言提供了一种构造数据类型——结构体,它能将

2、不同类型的数据存放在一起。一、结构体类型的定义struct结构体名{成员列表};例如,表示学生基本信息的结构体类型可定义如下:structstudent{intnum;charname[20];charsex;intage;floatscore;};7.1结构体二、结构体类型变量的定义1、先定义结构体再定义变量structstudent{……};structstudentstu1,stu2;为了使用方便,可以通过宏定义用一个符号常量来表示一个结构体类型,还可以用typedef来自定义数据类型。①#define

3、STUDENTstructstudentSTUDENT{intnum;……};STUDENTstu1,stu2;7.1结构体②typedef已有类型名新类型名;如:typedefintINTEGER;则INTEGERi;等价于如:typedefintNUM[10];则NUMa;等价于如:typedefchar*STRING;则STRINGp;等价于如:typedefstruct{intnum;……}STUDENT;STUDENTstu1,stu2;inti;inta[10];char*p;7.1结构体由此可见

4、,一个C程序结构一般为:#include……/*文件包含处理*/#define……/*宏定义*/typedefstruct/*定义结构体类型*/{……}STUDENT;intmax(intx,inty);/*函数说明*/main()/*主函数*/{……}intmax(intx,inty)/*子函数*/{……}7.1结构体注意:(1)结构体类型所占字节数=各成员所占字节数之和。(2)如何求结构体类型所占字节数?运算符sizeof——求某种数据类型所占字节数。如:sizeof(int)=2sizeof(float

5、)=4sizeof(structstudent)=2、定义类型同时定义变量structstudent{……}stu1,stu2;2+20+1+2+4=297.1结构体3、直接定义结构体类型变量(无结构体名)struct{……}stu1,stu2;说明:(1)一般采用“先定义类型再定义变量”。(2)成员名可与程序中的变量同名,但表示的是两个不同的量。(3)成员也可以为一个结构体。如:structdate{intyear;intmonth;intday;};structstudent{……structdatebi

6、rthday;};7.1结构体三、结构体变量的初始化(按顺序依次给各成员赋初值)如:structstudentstu={100,“Liu”,‘M’,19,95.5};不能写成:structstudentstu;stu={100,“Liu”,‘M’,19,95.5};说明:C允许对结构体变量进行初始化,但不允许将一组常量通过赋值语句直接赋给一个结构体变量。7.1结构体四、结构体变量的引用相同类型的结构体变量可相互整体赋值,但一般情况下,不能整体引用,只能对各个成员分别引用。如:structstudentstu1

7、,stu2={100,“Liu”,‘M’,19,95.5};stu1=stu2;如:printf(“……“,stu1);引用成员方式:结构体变量名.成员名如:printf(“……“,stu1.num,stu1.name,…);正确。注意:若成员本身为一个结构体,则需一级一级展开,只能对最低级的成员进行引用。如:printf(“……“,stu1.birthday);正确错误错误7.1结构体printf(“……“,stu1.birthday.year,stu1.birthday.month,stu1.birthd

8、ay.day);正确。【例7-1】设计一个程序,输入一个学生的信息并显示。【程序分析】假设学生信息包括:学号、姓名、性别、年龄和成绩,则定义一个结构体类型structstudent表示学生信息。7.1结构体structstudent{intnum;charname[20];charsex;intage;floatscore;};【程序源代码】#include"stdio.h"#include"str

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。