第8章结构体与共用体.ppt
《第8章结构体与共用体.ppt》由会员分享,可在线阅读,更多相关《第8章结构体与共用体.ppt(36页珍藏版)》请在三一文库上搜索。
1、复习与总结:有关指针的数据类型,问题:,学生信息:学号、姓名、性别、年龄、成绩、住址 一个学生信息的处理:定义6个变量 一个班(30人)学生信息的处理: 定义 180(6 * 30)个变量? 五个班(150人)学生信息的处理: 定义 900(6 * 150)个变量? 解决方法:能否将学生信息(包含6个不同类型的数据)作为一个整体进行处理?, 结构体数据类型,第8章 结构体与共用体,第8章 结构体与共用体,8.1 结构体数据类型 8.2 共用体数据类型 8.3 枚举类型 8.4 自定义类型,8.1 结构体数据类型,数组: 将相同类型的数据组合成一个有机的整体。 结构体: 将不同类型的数据组合成一
2、个有机的整体,用户可以根据需要指定数据结构(结构体)的组成。 说明: 结构体数据类型和系统提供的标准类型具有同等的地位和作用,都可用来定义变量的类型。,如何定义结构体数据类型?,8.1.1 结构体类型定义,结构体数据类型的定义: struct 结构体名 成员列表 ; 结构体数据成员的定义: 类型名 成员名 ;,struct student int num ; char name20 ; char sex ; int age ; float score ; char addr30 ; ;,结构体类型数据的存储: 大小:各成员所占内存单元之和。 顺序:一段连续存储单元中依次存储各成员数据。,8.1
3、.1 结构体类型定义,结构体类型数据的说明: 1. 类型与变量是不同的概念。 2. 对结构体中的成员(即域,也称分量),可以单独使用,其作用与地位相当于普通变量。 3. 成员名可以与程序中的变量名相同,互不影响。 4. 成员类型也可以是一个结构体类型。,8.1.1 结构体类型定义,如: struct date int month, day, year ; ; struct student int num ; char name20 ; char sex ; struct date birthday ; char addr30 ; ;,结构体类型数据的成员类型: 说明:成员类型也可以是一个结构体
4、类型。,8.1 结构体数据类型,既然结构体是一种新的数据类型,那么就会有具有结构体数据类型的数据: 结构体类型的变量 结构体类型的数组 结构体类型的指针 进一步的可以用 结构体类型数据作函数参数,结构体类型的变量,8.1.2 结构体类型的变量,结构体类型变量的定义: 1. 先声明结构体类型再定义变量: 如:struct student stud1 , stud2 ;,2. 在声明结构体类型的同时定义变量: struct 结构体名 成员列表 变量名列表 ; 3. 直接定义结构体类型变量: struct 成员列表 变量名列表 ;,8.1.2 结构体类型的变量,结构体变量成员的引用: 成员(分量)运
5、算符:. 引用形式: 结构体变量名.成员名 1. 不能将结构体变量作为一个整体进行输入和输出;只能对结构体变量中的各个成员分别进行输入和输出 如:printf( “%d,%s,%c,%d,%f,%s“, stud1 ) ; printf( “%d“, stud1.num ) ;,2. 若成员本身是一个结构体类型,则要使用多个成员运算符 如:stud1.birthday.day = 5 ; 3. 对结构体变量的成员可以像普通变量一样进行各种运算 如:stud1.sex = stud2.sex ; stud1.age + ; 4. 可引用结构体变量成员的地址,也可引用结构体变量的地址 如:scan
6、f( “%d“, /* 输出stud1的首地址*/, 错 误 正 确,8.1.2 结构体类型的变量,stuct student long int num ; char name20 ; char sex ; char addr30 ; ; main( ) struct student s = 99301, “Zhang san“, M, “No.4 Jinhua Road“ ; printf( “NO.:%ldnname:%snsex:%cnaddress:%sn“ , s.num, s.name, s.sex, s.addr ) ; ,结构体类型变量的初始化:,8.1 结构体数据类型,既然结
7、构体是一种新的数据类型,那么就会有具有结构体数据类型的数据: 结构体类型的变量 结构体类型的数组 结构体类型的指针 进一步的可以用 结构体类型数据作函数参数,结构体类型的数组,8.1.3 结构体类型的数组,定义结构体数组: 如:struct student stu3 ; stu0.age = 19 ; stu1.score = 93.0 ; stu2.sex = M ; 结构体数组初始化:,struct student int num ; char name20 ; char sex ; int age ; float score ; char addr30 ; ;,如:struct stud
8、ent stu3 = 99301, “Zhangsan“, M, 18, 93.0, “No.4 Jinhua Road“ , 99312, “Lisi“, M, 20, 76.0, “No.102 Lianhu Road“ , 99327, “Susan“, F, 19, 87.0, “No.32 Heping Road“ ;,8.1 结构体数据类型,既然结构体是一种新的数据类型,那么就会有具有结构体数据类型的数据: 结构体类型的变量 结构体类型的数组 结构体类型的指针 进一步的可以用 结构体类型数据作函数参数,结构体类型的指针,结构体变量指针: 该变量所占内存单元的起始地址 指向结构体变量
9、的指针: 保存结构体变量的起始地址,stud.num, stud.name, stud.sex, stud.score,8.1.4 结构体类型的指针,1. 引用结构体变量的成员: 结构体变量名.成员名,#include “string.h“ struct student long num ; char name20 ; char sex ; float score ; ; /* 输出结构体变量的各个成员值 */ main( ) struct student stud, *p = ,(*p).num, (*p).name, (*p).sex, (*p).score ) ;,p - num , p
10、 - name , p - sex , p - score ) ;,2. 通过结构体指针引用: ( *p ).成员名,3. 通过结构体指针引用: p -成员名,8.1.4 结构体类型的指针,struct student long num ; char name20 ; char sex ; float score ; char addr30 ; ;,main( ) struct student stu3 = 99301, “Zhangsan“, M, 93.0, “No.4 Jinhua Road“ , 99312, “Lisi“, M, 76.0, “No.102 Lianhu Road“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用
链接地址:https://www.31doc.com/p-2257972.html