结构体共用体及枚举类型课件.ppt

上传人(卖家):晟晟文业 文档编号:4606194 上传时间:2022-12-24 格式:PPT 页数:24 大小:69.50KB
下载 相关 举报
结构体共用体及枚举类型课件.ppt_第1页
第1页 / 共24页
结构体共用体及枚举类型课件.ppt_第2页
第2页 / 共24页
结构体共用体及枚举类型课件.ppt_第3页
第3页 / 共24页
结构体共用体及枚举类型课件.ppt_第4页
第4页 / 共24页
结构体共用体及枚举类型课件.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、C C语言的数据类型语言的数据类型n基本类型基本类型整型、实型整型、实型(单精度、双精度单精度、双精度)、字符型、枚举类型字符型、枚举类型n指针类型指针类型n空类型空类型11.1 11.1 概述概述n关于构造类型数据关于构造类型数据n数组:由相同类型的数据数组:由相同类型的数据(数组元素数组元素)构构成。成。n结构体:由不同类型的数据结构体:由不同类型的数据(成员变量成员变量)构成,各自占有独立的内存空间。构成,各自占有独立的内存空间。n共用体:由不同类型数据共用体:由不同类型数据(成员变量成员变量)构构成,共用一组内存空间。成,共用一组内存空间。结构体类型结构体类型举例:举例:职工人员记录。

2、职工人员记录。一名职工有一组相关的变量(属性)与一名职工有一组相关的变量(属性)与之对应,比如姓名、性别、出生年月、之对应,比如姓名、性别、出生年月、身份证号、地址、工资等。身份证号、地址、工资等。11.2 结构体变量的定义结构体变量的定义定义结构体变量的方法有下面三种:定义结构体变量的方法有下面三种:n先定义一个结构体类型,再定义相应的变量。先定义一个结构体类型,再定义相应的变量。n定义结构体类型的同时,定义该结构体类型定义结构体类型的同时,定义该结构体类型的变量。的变量。n不定义结构体类型,直接定义结构体变量。不定义结构体类型,直接定义结构体变量。(1)(1)先定义一个结构体类型,先定义一

3、个结构体类型,再定义相应的变量再定义相应的变量一般形式:一般形式:structstruct 结构体类型名结构体类型名 成员列表成员列表;structstruct 结构体类型名结构体类型名 变量名表变量名表;举例:举例:structstruct point point intint x;x;intint y;y;structstruct point p1,p2;point p1,p2;(2)定义结构体类型的同时,定义结构体类型的同时,定义该结构体类型的变量定义该结构体类型的变量一般形式:一般形式:structstruct 结构体类型名结构体类型名 成员列表成员列表 变量名表变量名表;举例:举例:

4、structstruct point point intint x;x;intint y;y;p1,p2;p1,p2;(3)不定义结构体类型,不定义结构体类型,直接定义结构体变量直接定义结构体变量一般形式:一般形式:structstruct 成员列表成员列表 变量名表变量名表;举例:举例:structstruct intint x;x;intint y;y;p1,p2;p1,p2;11.3 11.3 结构体的引用结构体的引用nC C语言中,任何变量的使用都必须语言中,任何变量的使用都必须“先先定义、后引用定义、后引用”。n结构体类型是具有复合结构的构造类型,结构体类型是具有复合结构的构造类型,

5、其变量引用方式可有两种:其变量引用方式可有两种:n引用结构体变量中的成员引用结构体变量中的成员n整体引用结构体整体引用结构体1 1、引用结构体变量中的成员、引用结构体变量中的成员n一般形式:一般形式:结构体变量名结构体变量名.成员名成员名n说明:说明:“.”是结构体成员操作符,优先级较是结构体成员操作符,优先级较高。高。该运算符的结果为对应的成员变量。该运算符的结果为对应的成员变量。举例:举例:struct studentint num;char name20;char sex;float score;stu1;引用示例:引用示例:nstu1.scorenstu1.namenstu1.num+

6、;n&stu1.sexn s c a n f(“%s”,stu1.name);2 2、整体引用结构体、整体引用结构体n结构体的整体引用仅限于:结构体的整体引用仅限于:n对结构体变量整体赋值对结构体变量整体赋值n作为函数参数传递作为函数参数传递n取地址取地址n注意:决不能对结构体变量进行注意:决不能对结构体变量进行加、加、减、比较等运算!即使结构体中只有一减、比较等运算!即使结构体中只有一个成员。个成员。对于结构体变量的引用,还应该注意对于结构体变量的引用,还应该注意以下几点:以下几点:n(1)不能将一个结构体变量作为一个整体来输入不能将一个结构体变量作为一个整体来输入和输出。和输出。n(2)相

7、同类型的结构体变量之间可以赋值,也可相同类型的结构体变量之间可以赋值,也可以对它们进行初始化,但不能对变量赋以常量。以对它们进行初始化,但不能对变量赋以常量。n(3)结构体中的每一个成员变量都可以看成一个结构体中的每一个成员变量都可以看成一个简单变量。简单变量。n(4)如果结构体类型中的某个成员又是结构体类如果结构体类型中的某个成员又是结构体类型,那么引用成员中的成员,应该按照一级一型,那么引用成员中的成员,应该按照一级一级的方式找到最低的一级成员。级的方式找到最低的一级成员。n(5)不要认为结构体成员长度之和就是结构体的不要认为结构体成员长度之和就是结构体的长度。一般:长度。一般:结构体的长

8、度结构体的长度=结构体成员长度之和结构体成员长度之和例如,设例如,设char占占1个字节,个字节,int占占4个字节,则:个字节,则:struct char c;int i;s;有:有:sizeof(s)5,而在而在 某些系统中,某些系统中,可能则有可能则有 sizeof(s)8。11.4 11.4 结构体变量的初始化结构体变量的初始化n对结构体变量进行初始化的形式:对结构体变量进行初始化的形式:结构体类型名结构体类型名 结构体变量名结构体变量名=结构体初结构体初始值始值;n说明:说明:结构体初值是用一对花括号括起来的数结构体初值是用一对花括号括起来的数据序列,序列中的数据与结构体类型中的成据

9、序列,序列中的数据与结构体类型中的成员变量一一对应。员变量一一对应。例如:例如:struct structtype int a,b;float f1;str1=1,2,3.4;main()struct structtype str2=3,4,9.6;static struct structtype str3=7,2,10.2;printf(str1:%d,%d,%fn,str1.a,str1.b,str1.f1);printf(str2:%d,%d,%fn,str2.a,str2.b,str2.f1);初始化时还要注意:初始化时还要注意:n被初始化的变量必须是刚定义的变量。被初始化的变量必须是

10、刚定义的变量。n对变量的初始化不等同对变量的赋值。对变量的初始化不等同对变量的赋值。n结构体的初始化可以只进行一部分。结构体的初始化可以只进行一部分。n如果结构体类型中又包含有结构体类型如果结构体类型中又包含有结构体类型的成员,可依次在结构体初始值中列出的成员,可依次在结构体初始值中列出其初始值,也可用花括号将表示成员结其初始值,也可用花括号将表示成员结构体的部分括起来。构体的部分括起来。11.5 11.5 结构体数组结构体数组n例如处理学生信息系统:例如处理学生信息系统:学生信息学生信息(学号、姓名、性别、成绩、学号、姓名、性别、成绩、)n结构体数组的引进:结构体数组的引进:对数据的横向划分

11、:引进结构体对数据的横向划分:引进结构体对数据的纵向划分:引进数组对数据的纵向划分:引进数组n结构体数据由两种构造类型数据结构体数据由两种构造类型数据(数组、数组、结构体结构体)组成。组成。1 1、结构体数组的定义形式:、结构体数组的定义形式:【方式一】【方式一】structstruct 类型名类型名 成员表成员表;structstruct 类型名类型名 数组数组名名 常量表达式常量表达式;【例【例】structstruct student student intint num;num;char name20;char name20;char sex;intchar sex;int age;a

12、ge;float score4;float score4;structstruct student students10;student students10;【方式二】【方式二】structstruct 成员表成员表 数组名数组名 常量表达式常量表达式;【例【例】structstruct student student intint num;num;char name20;char name20;char sex;char sex;intint age;age;float score4;float score4;students10;students10;结构体数组在内存中的存放:结构体数组

13、在内存中的存放:nnum namesexagescore4students0 20215 Li PingM18.students1 20216 Zhang SanM17.students2 20217 Wang WuF19.students3 20218 Li SiM18.数组的连续存放结构体的连续存放数组的连续存放结构体的连续存放 结构体数组的连续存放结构体数组的连续存放2 2、结构体数组的引用、结构体数组的引用n例如:例如:students2.numstudents2.numstudents1.sexstudents1.sexstudents2.score1students2.score1

14、n注意:注意:“”的优先级高于的优先级高于“.”.”!3 3、结构体数组的初始化、结构体数组的初始化两种方法:两种方法:(1)(1)通过通过scanfscanf、getsgets等函数从键盘输入每一等函数从键盘输入每一个结构体数组元素或数组元素的成员,对个结构体数组元素或数组元素的成员,对它们赋初值。它们赋初值。(2)(2)通过在定义结构体数组的时候对它们进通过在定义结构体数组的时候对它们进行初始化:行初始化:structstruct 类型名类型名 数组名数组名 常量表达式常量表达式=,;说明:说明:n“数组名数组名”后面的后面的“常量表达式常量表达式”可以可以省略,由系统根据初始化数据个数决定省略,由系统根据初始化数据个数决定数组长度。数组长度。n可以只对部分数据初始化。可以只对部分数据初始化。n允许在初始化时省略标识单个结构体的允许在初始化时省略标识单个结构体的花括号。花括号。举例:举例:struct aaint a;intstruct aaint a;int b;b;struct aastruct aa bb5=1,2,3,4,5,6,7,8;bb5=1,2,3,4,5,6,7,8;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(结构体共用体及枚举类型课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|