C语言课程课件 第十四章 结构体共用体用户自定义类型

上传人:杨**** 文档编号:36585257 上传时间:2018-03-30 格式:PPT 页数:8 大小:172KB
返回 下载 相关 举报
C语言课程课件 第十四章 结构体共用体用户自定义类型_第1页
第1页 / 共8页
C语言课程课件 第十四章 结构体共用体用户自定义类型_第2页
第2页 / 共8页
C语言课程课件 第十四章 结构体共用体用户自定义类型_第3页
第3页 / 共8页
C语言课程课件 第十四章 结构体共用体用户自定义类型_第4页
第4页 / 共8页
C语言课程课件 第十四章 结构体共用体用户自定义类型_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《C语言课程课件 第十四章 结构体共用体用户自定义类型》由会员分享,可在线阅读,更多相关《C语言课程课件 第十四章 结构体共用体用户自定义类型(8页珍藏版)》请在金锄头文库上搜索。

1、第14章 结构体、共用体和用户定义 类型 14.1 用typedef说明一种新类型名 14.2 结构体类型 14.3 共用体14.1 用typedef说明一种新类型 名除了可以直接使用C提供的标准类型名(如int、char、float、double、long等)以 外,还可以用typedef声明新的类型名来替代已有的类型名。 实质上typedef命令就是给我们以前的类型进行起外号。说明新类型名的语句一般形式为:typedef 类型名 标识符可以用标识符来代替已 有的类型名来使用。标 识符其实就是类型名的 一个(外号)替身。例如: typedef int INTEGER;它也能用来 定义整型IN

2、TEGER m,n;int m,n;14.2 结构体类型结构体和我们前面所说的数组有点相同,都是由若干个成员所组成.数组只不过 是相同类型的元素的集合,而结构体中的各个成员的类型可以不同.结构体类型说明的一般形式为:struct 结构体标识名 类型名1 结构成员名表1;类型名2 结构成员名表2;:类型名n 结构成员名表n;说明结构体类型的关键字用户定义的标识符,在说 明中也可以不出现分号不 能少 例如: struct student char name12;char sex;int year,month,day;float sc4; ; 接着我们就struct student 类型来定义变量.

3、数组和 指针变量了struct student std,pers3,*pstd如上是用结构体类型struct student 定义了一个结构体变量std,结构体数 组pers和一个结构体指针变量pstd. 其中:1.结构体变量std所占的内存空间就为左边说明语句中的各成员的总和. 2.结构体数组pers中含有3个元素,每一元素其实也就是一个结构体变量. 3.结构体指针变量pstd只能被赋予结构体变量的地址,也就是说pstd只能指向结构体.结构体变量.数组和指针变量的定义方式还有3种转去介绍14.2 结构体类型结构体变量.数组和指针变量的另外3种定义方式如下:第2种:紧跟在结构体类型之后进行定义

4、 struct student char name12;char sex;int year,month,day;float sc4; std,pers3,*pstd; 跟前一种方式唯一的 区别就是:这一种是在 说明结构体的同时进 行定义的,而上一种只 是先说明好了结构体, 然后再进行定义的.第3种: struct后面的标识符也可以省略 struct char name12;char sex;int year,month,day;float sc4; std,pers3,*pstd; 功能和第2种完全相同,不 过此种定义方式有一种坏 处,坏处只在于:第2种不仅 可以在说明结构体的同时 进行定义.

5、以后还可以用结 构体类型struct student再 次进行定义变量等,而此种 就不可以再次进行定义了, 因为struct 不能被称为结构 体类型.第4种:我们也可以在前3种的基础之上再加上: typedef 结构体类型部分 标识符例如: typedef struct char name12;char sex;int year,month,day;float sc4; STREC;STREC其实就是结构体类型 的一个替身。 之后我们就可以用STREC来 定义变量和数组了.比如: STREC std,pers3,*pstd; 14.2 结构体类型14.2.3 给结构体变量和数组赋初值给结构体变

6、量赋初值struct student char name12;char sex;int year,month,day;float sc4; std =“Li Ming”, M, 1962, 5, 10, 88, 76, 85.5, 90;变量std在内存中的形式如下图:Li Ming M 1962 5 10 88.0 76.0 85.5 90.0name sex year month day sc0 sc1 sc2 sc3std14.2 结构体类型14.2.3 给结构体变量和数组赋初值给结构体数组赋初值struct bookcard char num5;float money; bk3 = “

7、NO.1”,35.5, “NO.2”,25.0, “NO.3”,66.7 ;bk0 bk1 bk2 14.2 结构体类型引用(使用)结构体变量中的数据例如:给出如下定义和语句: struct student char name12;char sex;int year,month,day;float sc4; std,arr5,*ps; ps=引用结构体变量std中的sex成员的形式有std.sex ps-sex (*ps).sex请问如何引用结构体数组arr的第0个元素arr0中的sex成员? 如何引用结构体变量std中的数组成员sc中的元素sc2?arr0.se xstd.sc2 ps-sc

8、2 (*ps). sc2题目若有以下说明和语句,则对结构体变量st中成员i的引用 方式不正确的是 struct stu int i;int name; st,*p; p=A st.i B *p.i C (*p).i D p-iB14.3 共用体共用体(union)的类型说明和变量的定义方式与结构体的类型说明和变量的 定义方式完全相同,不同的是,结构体变量中的成员各自占有自己的存储空间, 而共用体变量中的所有的成员占有同一个存储空间.例如: struct data int i;char ch;float f; a;结构体变量a在内存中的形式如下:占4个字节 占1个字节 占4个字节i ch f9union data int i;char ch;float f; a;共用体变量a在内存中的形式如下:占4个字节i占1个字节占4个字节chf共用体变量所占 内存字节与其成 员中占字节数最 多的那个成员相 等.即是4个字节.注意 若给:a.i=1; 此时只有a.i占用内存,a.ch和a.f都不起作用. 若给:a.ch=a; 此时只有a.ch占用内存,a.i和a.f都不起作用. 若给:a.f=1.5; 此时只有a.f占用内存,a.i和a.ch都不起作用.

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

当前位置:首页 > IT计算机/网络 > C/C++资料

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