清华大学c语言程序设计 l9 结构、联合和枚举

清华大学c语言程序设计 l9 结构、联合和枚举

ID:34101484

大小:633.45 KB

页数:33页

时间:2019-03-03

清华大学c语言程序设计 l9 结构、联合和枚举_第1页
清华大学c语言程序设计 l9 结构、联合和枚举_第2页
清华大学c语言程序设计 l9 结构、联合和枚举_第3页
清华大学c语言程序设计 l9 结构、联合和枚举_第4页
清华大学c语言程序设计 l9 结构、联合和枚举_第5页
资源描述:

《清华大学c语言程序设计 l9 结构、联合和枚举》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机程序设计基础第9讲结构、联合和枚举陈来军(010-62795814)chenlaijun@tsinghua.edu.cn清华大学电机系2015.11.181主要内容C程序设计举例结构体struct联合体union枚举参考教材:第9章(暂时不看9.3、9.4节)<2>9.1C程序设计举例例1:学籍卡信息<3>例2:求平面上的两点间距离p1p2例3:复数操作<6>例4:四季风景<7>预备知识1.typedef关键字•用法:–typedef现有类型新名字;–举例:•作用:–为现有类型创建一个新的名字–用于编写更美观、可读性更强的代码<8

2、>2.sizeof关键字用法:sizeof(变量名或者类型)返回内存大小<9>sizeof关键字sizeof是一个特殊的编译预处理,不能看成函数、也不是一元操作符。•sizeof是在编译阶段求值的。•inta=0;printf(“%d”,sizeof(a=3));printf(“%d”,a);•输出结果是4,0而不是我们期望的4,3。问题在于sizeof在编译阶段处理的特性,sizeof不能被编译成机器码,所以sizeof作用范围内,也就是()里面的内容也不能被编译,而是被替换成类型。•a=3相当于int,而代码也被替换为inta=0;printf(“

3、%d”,4);printf(“%d”,0);<10>9.2结构struct1.结构的概念(structure)struct是C语言中的构造类型,是由不同数据类型的数据组成的集合体。为处理复杂的数据结构提供了手段。为函数间传递不同类型的参数提供了便利。<11>2.结构类型的声明struct{成员变量说明1;成员变量说明2;姓名:张三学……籍性别:男};卡年龄:20空白学籍卡身高:1.70m住址:清华园1号各科成绩……这里的分号;一定不能丢!<12>2.结构类型的声明如果漏掉结构声明结尾的分号,可能会导致奇怪的错误。structstudent{……

4、}f(void){…return0;}倘若在编程时没有指定函数f的返回类型(编程有点儿随意),由于前面的结构声明没有正常终止,所以编译器假设f的返回值是structstudent类型的,因此在执行到return语句的时候才会发现错误。<13>3.结构变量的定义一种数据类型•变量定义形式–struct结构名结构变量名;•注意:–结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量、数组等完全一致。–结构变量定义必须在结构类型声明之后,二者也可同时进行。–结构变量占内存大小可用sizeof运算求出:sizeof(运算量)其中,运算量可以是变量名,也

5、可以是类型名。typedefstructstudentSTUDENT;STUDENTzhang3;<14>4.结构变量的使用和初始化•使用形式–一般情况下不能把结构体变量作为一个整体参加数据处理。–结构体成员的引用形式:结构变量名.成员名–”.”成员运算符优先于所有运算符:*zhang.name等同于*(zhang.name)•初始化<15>结构变量的使用:成员访问整体复制数组不能=运算符复制结构可以=运算符复制(包括其中的数组)注:使用“==”判断两个结构体相等是不合法的。<16>结构变量的使用:成员访问整体复制函数间的传递参数返回值(

6、更好的办法是采用结构指针,而不是利用“副本”)<17>5.结构数组•具有相同结构体变量的结构体也可以组成数组160张学籍卡数组•结构数组的说明形式struct结构名结构数组名[元素个数];•结构数组初始化struct结构名结构数组名[]={初始数据};<18>6.结构嵌套•结构的成员项是结构•参加运算和操作的只能是最内层结构的成员项•内层结构成员的引用形式:–结构变量名.外层成员名.内层成员名structdate{structstudentintday;{structstudentwang2;intmonth;charname[20];strcpy(

7、wang2.name,”wang2”);intyear;charsex;wang2.sex=‘M’;};structdatebirthday;wang2.birthday.year=1980;};wang2.birthday.month=3;wang2.birthday.day=6;<19>9.3联合union1.联合的概念(union)union是C语言中的构造类型,是由几个不同数据变量共享同一段内存的数据类型。2.定义形式:union联合名{数据类型成员名1;数据类型成员名2;:};3.引用形式:–联合名.成员名<20>4.union与stru

8、ct的区别•编译器只为联合中最大成员分配足够空间–联合的成员在这个空间内彼此覆盖结构联合结构联

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

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

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