《C/C++程序设计教程》电子教案 C语言程序设计6

上传人:E**** 文档编号:89405018 上传时间:2019-05-24 格式:PPT 页数:25 大小:147KB
返回 下载 相关 举报
《C/C++程序设计教程》电子教案 C语言程序设计6_第1页
第1页 / 共25页
《C/C++程序设计教程》电子教案 C语言程序设计6_第2页
第2页 / 共25页
《C/C++程序设计教程》电子教案 C语言程序设计6_第3页
第3页 / 共25页
《C/C++程序设计教程》电子教案 C语言程序设计6_第4页
第4页 / 共25页
《C/C++程序设计教程》电子教案 C语言程序设计6_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《《C/C++程序设计教程》电子教案 C语言程序设计6》由会员分享,可在线阅读,更多相关《《C/C++程序设计教程》电子教案 C语言程序设计6(25页珍藏版)》请在金锄头文库上搜索。

1、第六章 构造数据类型,2019/5/24,C与C+程序设计教程-第六章,2,同一类型数据的顺序排列,类型不同但相互关联,2019/5/24,C与C+程序设计教程-第六章,3,6.1 结构体 6.2 共用体 6.3 位字段 6.4 枚举类型 6.5 用typedef定义类型,退出,2019/5/24,C与C+程序设计教程-第六章,4,6.1结构体,结构体类型 结构体类型变量(结构体变量) 结构体的成员(成员):组成结构体的每个数据。 6.1.1 结构体类型定义 6.1.2 结构体变量说明 6.1.3 结构体变量的使用 6.1.4 结构体变量的初始化 6.1.5 结构体数组 6.1.6 结构体和函

2、数,返 回,2019/5/24,C与C+程序设计教程-第六章,5,struct 结构体类型名 类型名 结构体成员名; /*成员表*/ ;,6.1.1 结构体类型定义,例6.1描述通讯录的结构体类型。 struct person char name20; int age; char sex; char address100; long zipcode; ;,例6.2结构体类型的嵌套定义。 struct birthday int year; int month; int day; ; struct person char name20; struct birthday date; char sex

3、; char address100; long zipcode; ;,类型名,成员变量名,返 回,2019/5/24,C与C+程序设计教程-第六章,6,6.1.2 结构体变量定义,间接定义 直接定义 无名定义 typedef定义,struct birthday int year; int month; int day; ; struct person char name20; struct birthday data; char sex; char address100; long zipcode; ; struct person p;,struct birthday int year; in

4、t month; int day; ; struct person char name20; struct birthday data; char sex; char address100; long zipcode; p;,struct birthday int year; int month; int day; ; struct char name20; struct birthday data; char sex; char address100; long zipcode; p;,例6.3求结构体类型(或结构体变量)的字节数。 #define NAMESIZE 20 #define A

5、DDRSIZE 100 struct birthday int year; int month; int day; ; struct person char nameNAMESIZE; struct birthday date; char sex; char addressADDRSIZE; long zipcode; ; main() struct person p; printf(“the p length: %dn“,sizeof(p); printf(“the struct person length:%dn“,sizeof(struct person); ,The p length:

6、 131 The struct person length: 131,结构体变量的存储结构: 对结构体变量成员顺序分配存储空间。,返 回,2019/5/24,C与C+程序设计教程-第六章,7,6.1.3 结构体变量的使用,结构体一般不能作为一个整体参加数据处理,而参加各种运算和操作的是结构体的各个成员项数据。对成员的使用方式: 结构体变量名.成员名 注:相同结构体类型的变量可以相互赋值。,p.zipcode=130022; p.date.year=1980;,struct person p1,p2; p1=p2;,返 回,2019/5/24,C与C+程序设计教程-第六章,8,6.1.4 结构体

7、变量的初始化,间接初始化 直接初始化 无名初始化,例6.4结构体变量的初始化。 #define NAMESIZE 20 #define ADDRSIZE 100 struct birthday int year; int month; int day; ; struct person char nameNAMESIZE; struct birthday date; char sex; char addressADDRSIZE; long zipcode; ; struct person p=“LiPing“,1994,12,25,m,“zhong shan road“,310000; main

8、() printf(“Name: %sn“,p.name); printf(“birthday: %d,%d,%dn“,p.date.year,p.date.month,p.date.day); printf(“sex: %cn“,p.sex); printf(“address: %sn“,p.address); printf(“zipcode: %ldn“,p.zipcode);,name: LiPing birthday: 1994,12,25 sex: m address: zhong shan road zipcode: 310000,返 回,2019/5/24,C与C+程序设计教程-

9、第六章,9,6.1.5 结构体数组,1. 结构体数组的定义 struct 结构体类型名 结构体数组名元素个数;,struct student aatd10=“zhang ming”,18,m,“Lipiang”,20,f; struct student aatd=“zhang ming”,18,m,“Lipiang”,20,f;,2. 结构体数组的初始化 struct 结构体名 数组名元素个数=,;,number color type 101 G c 210 Y m 105 R l 222 B s 308 P b,返 回,2019/5/24,C与C+程序设计教程-第六章,10,结构体变量作为函

10、数的参数是以复制的方式传递给函数,是单向复制传递的过程。,6.1.6 结构体和函数,arg.a=27 arg.b=3 arg.c=30 CALL FUNC( ) parm.a=27 parm.b=3 parm.c=30 PROCESS parm.a=18 parm.b=5 parm.c=23 RETURN arg.a=27 arg.b=3 arg.c=30,返 回,2019/5/24,C与C+程序设计教程-第六章,11,union u char ch; int i; float f; ;,共用体:其中所有成员均放在以同一地址开始的存储空间中,使用覆盖的方式共享存储单元。共用体所占的空间的大小取

11、决于占存储空间最大的那个成员。,6.2 共用体,1.共用体类型的定义 union 共用体类型名 类型名 成员名; ;,2019/5/24,C与C+程序设计教程-第六章,12,2.共用体变量的定义,间接定义 直接定义 无名定义,union u char ch; int i; float f; ; union u a,b;,union u char ch; int i; float f; a,b;,union char ch; int i; float f; a,b;,注:共用体变量不能在定义时赋初值。,2019/5/24,C与C+程序设计教程-第六章,13,3.共用体成员的使用,共用体变量名.成

12、员名 注:不能对共用体变量进行整体操作,只能单独使用其成员。共用体变量不能作为函数参数或函数值,但可以使用指向共用体的指针变量。,a.ch,例6.8字和字节处理。 struct w char low; char high; ; union u struct w byte; short word; uw; main() int result; uw.word=0x1234; printf(“word value: %04xn“,uw.word); printf(“high byte: %02xn“,uw.byte.high); printf(“low byte : %02xn“,uw.byte.

13、low); uw.byte.low=0xff; printf(“word value: %04xn“,uw.word); result=uw.word+0x2000; printf(“the result: %04xn“,result); ,word value: 1234 high bytes: 12 low byte: 34 word value: 12ff the result: 22ff,2019/5/24,C与C+程序设计教程-第六章,14,4.共用体变量的存储结构 其所占空间的大小取决于占存储空间最大的那个成员,它使几个不同数据类型的数据共用同一个存储空间。,union perso

14、n char name20; int age; char sex; char address50; long zipcode; ;,/ 20,/ 2,/1,/50,/4,/ 50,返 回,2019/5/24,C与C+程序设计教程-第六章,15,6.3 位字段 C语言中数据类型的最小长度char占一个字节(8位),而有时只需1位或几位来表示信息。 位字段数据:命令字、方式字和状态字等以二进制位为单位的信息。C语言可以对之处理,这是高级语言的低级形式的一种表现。,2019/5/24,C与C+程序设计教程-第六章,16,1. 位字段的定义 借助结构体类型,以二进制位为单位来说明结构体中成员所占空间。 struct 结构体名 unsigned 位段名:常量表达式; /*常量表达式表示位字段宽度(位)*/ ;,struct bit unsigned a: 2; unsigned b: 2; unsigned c: 1; unsigned d: 1; unsigned e: 2; ;,注:(1)位段宽度用常量表达式来指定,不得超过机器字长。 (2)无名位段若其宽度为0,则下一位段从一个新的字节开始存放。 (3)不能定义位字段结构的数组。 (4)位字段结构的存储大小与int相同。即实际小于2个字节也要占2个字节;若实际大小于2个字节则占用下一个连续

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号