结构体和联合体数据类型ppt课件.ppt

上传人:资****亨 文档编号:122207709 上传时间:2020-03-03 格式:PPT 页数:39 大小:729.50KB
返回 下载 相关 举报
结构体和联合体数据类型ppt课件.ppt_第1页
第1页 / 共39页
结构体和联合体数据类型ppt课件.ppt_第2页
第2页 / 共39页
结构体和联合体数据类型ppt课件.ppt_第3页
第3页 / 共39页
结构体和联合体数据类型ppt课件.ppt_第4页
第4页 / 共39页
结构体和联合体数据类型ppt课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《结构体和联合体数据类型ppt课件.ppt》由会员分享,可在线阅读,更多相关《结构体和联合体数据类型ppt课件.ppt(39页珍藏版)》请在金锄头文库上搜索。

1、结构体和联合体数据类型 结构体类型的定义和使用结构体数组结构体数据类型与指针的关系联合体数据类型 结构体类型的定义和使用 结构体数据类型的特点结构体类型由若干个数据项组成 这些数据项都属于一种已经有定义数据类型 基本数据类型或构造数据类型 结构体类型中的数据项称为结构体成员 程序使用结构体类型数据需要在源程序文件中进行定义 结构体数据类型只在其定义存在的源程序中起作用 在其他源程序中不能使用 同一个源程序文件中可以定义若干个结构体类型 结构体数据类型仍然是一类变量的抽象形式 系统不会为数据类型分配存储空间 使用结构体类型数据 必须要定义结构体数据类型的变量 结构体类型的定义和使用 结构体类型定

2、义 struct结构体名 数据类型名结构体成员1 数据类型名结构体成员2 数据类型名结构体成员i 数据类型名结构体成员n 结构体类型定义示例structstudent intstuno charname 20 unsignedage charsex charaddress 80 chartel 20 结构体类型的定义和使用 结构体变量定义 方法一 先定义结构体数据类型 然后定义该数据类型的变量 其定义形式与定义基本类型变量相同 数据类型名变量表 在已经定义结构体类型structstudent的基础上定义结构体类型变量stu1和stu2structstudentstu1 stu2 方法二 定义数

3、据类型的同时定义结构体类型变量struct标识符 结构体成员列表 结构体变量列表 定义结构体类型structstudent的同时定义变量stu3和stu4 structstudent intstuno charname 20 unsignedage charsex charaddress 80 chartel 20 stu3 stu4 方法三 直接定义结构体类型变量struct 结构体成员列表 结构体变量列表 直接定义 仅定义 结构体变量stu5和stu6 structstudent intstuno charname 20 unsignedage charsex charaddress 80

4、 chartel 20 stu5 stu6 结构体类型的定义和使用 结构体类型嵌套定义结构体类型的嵌套定义指的是在一个结构体数据类型中 某些结构体成员的数据类型是另外一个在同一C程序中已经定义完成的结构体数据类型 structdate intyear intmonth intday structstudent1 intstuno charname 20 structdatebirthday unsignedage charsex charaddress 80 chartel 20 数据类型 structdate 结构体类型的定义和使用 typedef简单应用 数据类型的别名使用typedef为

5、已经存在的数据类型取别名后 数据类型的本名和别名在源程序中具有同样的作用 定义别名的一般形式为 typedef数据类型名别名 为系统内置数据整型 int 类型取别名INTEGER typedefintINTEGER 此后 intj k 和INTEGERj k 的意义相同 先定义构造数据类型 然后再取别名 structstudent intstuno charname 20 structdatebirthday unsignedage charsex charaddress 80 chartel 20 typedefstructstudentSTU 在定义构造数据类型的同时取别名 typedef

6、structstudent intstuno charname 20 structdatebirthday unsignedage charsex charaddress 80 chartel 20 STU 结构体类型的定义和使用 typedef简单应用 构造复杂数据类型使用typedef还可以构造复杂结构的数据类型 由于不同的应用环境对复杂结构数据的要求不同 所以使用typedef关键字构造复杂结构数据没有统一的形式 在应用程序中应该根据需要构造合适形式的数据类型 Ex0701用typedef构造指定长度的字符串数据类型 Ex0702用typedef构造指定行数和列数的二维数组类型 Ex07

7、03用typedef构造指针数据类型 结构体类型的定义和使用 结构体变量的使用 初始化定义结构体类型变量的同时也可以进行初始化 结构体变量初始化的形式类似于一维数组 不同之处在于结构体变量的成员值依据其所属类型可以是不同类型的数据 结构体变量初始化的一般形式为 struct结构体名变量名 结构体变量成员值列表 structstudents1 12 LiMing 1992 12 30 20 m 12songlin 65102621 structstudents1 12 LiMing 1992 12 30 20 m 12songlin 65102621 结构体类型的定义和使用 结构体变量的使用 引

8、用通过操作结构体变量的每一个数据项达到操作结构体变量的目的 对于结构体变量中每一个数据项 成员分量 的引用要使用成员运算符 点运算符 以构成结构体成员分量 结构体成员分量的一般形式为 结构体变量名 成员分量名对于嵌套的结构体类型变量 访问其成员时应采用逐级访问的方法 直到获得所需访问的成员为止 其形式为 结构体变量名 一级成员分量名 二级成员分量名 结构体分量引用示例s1 name s1 age s1 sexs1 birthday year s1 birthday month s1 birthday day 结构体类型的定义和使用 结构体变量的使用 输入输出C程序中只能将结构体变量的成员分量作

9、为输入输出的对象 对结构体变量成员分量输入输出操作时应该特别注意对应成员分量的数据类型 两个同类型的结构体变量可以直接进行赋值操作 Ex0704结构体变量的输入 输出示例 scanf s d u s1 name structstudents1 12 liming 1988 12 30 22 m 12songlin 65102621 将结构体变量s1赋值给同类型结构体变量s2structstudents2 s1 结构体类型的定义和使用 结构体变量的使用 做函数参数结构体类型变量和结构体类型变量的成员都可以作为函数的参数在函数间进行传递 数据的传递仍然是 值传递方式 使用结构体类型变量作为函数参数

10、时 被调函数的形参和主调函数的实参都是结构体类型的变量 而且属于同一个结构体类型 使用结构体类型变量的成员作为函数参数时 其中被调函数中的形参是普通变量 而主调函数中的实参是结构体类型变量中的一个成员 并且形参和实参的数据类型应该对应一致 Ex0705利用结构体变量做函数参数 实现计算某学生3门课程平均成绩的功能 结构体类型的定义和使用 结构体变量的使用 做函数的返回值类型定义结构体数据类型后 同一程序中也可以用该结构体数据类型作为函数的返回值类型 函数的返回值类型是结构体类型时 函数执行完成后返回的就是一个结构体数据 称这种函数为返回结构体类型的函数 其函数定义的一般形式为 Ex0706已知

11、某学生几门课程的成绩 利用返回结构体类型函数实现统计总成绩功能 struct标识符函数名 形式参数表及其定义 函数体 结构体和联合体数据类型 结构体类型的定义和使用结构体数组结构体数据类型与指针的关系联合体数据类型 结构体数组 结构体数组的定义定义结构体数组有3种方法 分别是 先定义结构体类型然后定义结构体数组 在定义结构体类型的同时定义结构体数组 只定义某种结构体类型的数组 在定义结构体数组的同时还可以定义同类型的结构体变量 方法一示例structperson charname 20 intcount structpersonp1 30 p2 100 方法二示例structperson ch

12、arname 20 intcount p1 30 p2 100 方法三示例struct charname 20 intcount p1 30 p2 100 结构体数组 结构体数组的初始化结构体数组各元素首先以数组的形式在系统内存中连续存放 其中的每一数组元素的成员分量则按类型定义中出现的顺序依次存放 结构体数组初始化的一般形式是 struct标识符数组名 长度 初始化数据列表 结构体数组初始化形式与较它高一维的普通数组初始化形式类似 一维结构体数组的初始化就类似于普通二维数组初始化 初始化中的注意事项也与二维普通数组初始化时相同或类似 结构体数组初始化示例typedefstructperson

13、 charname 20 intcount PER 单行初始化形式PERper 3 Zhang 0 Wang 0 Li 0 分元素初始化形式PERper 3 Zhang 0 Wang 0 Li 0 结构体数组 结构体数组元素的使用通过操作数组的每一个元素达到操作数组的目的 结构体数组元素需要用下标变量的形式表示 结构体数组元素就相当于一个结构体变量 将引用数组元素的方法和引用结构体变量的方法结合起来就形成了引用结构体数组元素成员分量的方法 其一般形式为 数组名 下标 成员名不能将结构体数组元素作为一个整体直接进行输入输出 也需要通过输入输出数组元素的每一个成员分量达到输入输出结构体数组元素的目

14、的 可以将结构体数组元素作为一个整体赋给同类型数组的另外一个元素 或赋给一个同类型的结构体变量 Ex0707结构体数组操作 数组元素引用 数组元素的输入输出 示例 结构体数组作函数的参数在函数调用期间实参结构体数组将它的全部存储区域或者部分存储区域提供给形参结构体数组共享 如果需要把整个实参结构体数组传递给被调函数中的形参结构体数组 可以使用实参结构体数组的名字或者实参结构体数组第一个元素 0号元素 的地址 如果需要把实参结构体数组中从某个元素值后的部分传递给被调函数中的形参结构体数组 则使用实参结构体数组某个元素的地址 Ex0708统计并输出年龄在18岁以上的学生人数 结构体和联合体数据类型

15、 结构体类型的定义和使用结构体数组结构体数据类型与指针的关系联合体数据类型 结构体数据类型与指针的关系 结构体类型变量与指针的关系结构体类型变量的指针就是该结构体类型变量所占内存区域的起始地址 同样也可以定义一个指针类型的变量来存放这个地址 即指向这个结构体类型变量 结构体类型指针变量定义形式为 struct结构体类型名 指针变量名 设已定义类型structstudent 指针变量ptr定义如下structstudent ptr 结构体类型变量与指针的关系使用取地址运算符将结构体变量的地址赋给指针变量 通过指向结构体变量的指针变量访问结构体变量成员分量使用的形式 指针变量 成员名 指针变量名

16、成员名 结构体数据类型与指针的关系 先定义指针变量 然后赋值structstudentstudent ptr ptr Ex0709已知某学生3门课程的成绩存放在一个结构体变量中 请设计一个独立的函数计算该学生的平均成绩 要求函数使用结构体类型指针变量做函数的形参 结构体数据类型与指针的关系 结构体类型数组与指针的关系通过将一个结构体数组元素的地址赋值给同类型指针变量使得该指针变量指向结构体数组元素 结构体数组元素等价于同类型普通变量 通过指针变量操作数组元素的方式与通过指针变量操作结构体变量方式类似 structA charc intx structAa 5 p1 p1 数组元素a 2 的操作方式 a 2 x p1 xp1 x 结构体数据类型与指针的关系 结构体类型数组与指针的关系通过将结构体数组的起始地址赋给同类型的指针变量使得该指针变量指向结构体数组 将通过指针操作一维数组的形式与通过指针操作结构体变量的形式结合 即形成了通过指针变量操作结构体数组的表达式形式 structA charc intx structAa 5 p1 p1 a 数组元素a i 的操作方式 p1 i x p1

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

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

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