c10结构体、共用体及枚举类型

上传人:san****019 文档编号:70548861 上传时间:2019-01-17 格式:PPT 页数:42 大小:821.51KB
返回 下载 相关 举报
c10结构体、共用体及枚举类型_第1页
第1页 / 共42页
c10结构体、共用体及枚举类型_第2页
第2页 / 共42页
c10结构体、共用体及枚举类型_第3页
第3页 / 共42页
c10结构体、共用体及枚举类型_第4页
第4页 / 共42页
c10结构体、共用体及枚举类型_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《c10结构体、共用体及枚举类型》由会员分享,可在线阅读,更多相关《c10结构体、共用体及枚举类型(42页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计,第10章 结构体、共同体与枚举类型,问题:实际应用中,通常会将相关的不同类型的数据项组成一个有机的整体,这些数据项在计算机中如何表示?,学生登录信息 学生成绩表,这些数据的特点是: 1、有多项不同类型数据组成 2、各项数据占用空间大小有可能不同 C语言为了表示这种数据,定义了一种数据结构:结构体。,引子,第10章 结构体、共同体与枚举类型,本章难点,结构体类型及变量 结构体数组的使用 指针和结构体 共用体、枚举、用户自定义类型,结构体指针变量的引用 链表的建立、插入、删除、输出等操作 共用体类型的数据特点,本章要点,10.1,10.2,10.3,10.4,10.5,结构体变量的

2、定义,结构体变量的引用和初始化,结构体数组,结构体指针变量,结构体与函数,本章主要内容,10.6,10.7,10.8,10.9,10.10,位段结构体,链表,共同体,枚举类型,用typedef定义类型,本章主要内容,结构体类型定义 结构体是一种构造数据类型 一个“结构体”类型由若干“成员”组成,每一个成员可以是一个基本数据类型或者是一个结构体类型。 结构体类型定义,struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . ;,成员类型可以是 基本型或构造型,struct是关键字, 不能省略,合法标识符 可省:无名结构体,10.1 结构体变量的定义,定义义结构体类型时,应注意 成员

3、类型可以是除本身结构体类型之外的任何已有类型,也可以是任何已有类型(包括本身类型在内)的指针类型,即构成嵌套的结构。 当一个结构体类型定义在函数之外时,它具有全局作用域;若定义在任一对花括号之内,则具有局部作用域,其作用范围是所在花括号构成的块。 结构体是一种复杂的数据类型,是数目固定、类型不同的若干成员的集合,结构体类型的定义只是列出了该结构的组成情况,编译系统并未因此而分配存储空间,当定义了结构体类型的变量或数组后,编译系统才会分配存储空间。 成员名可以与程序中的变量名相同,二者不代表同一个对象。 如果两个结构体的成员类型、名称、个数相同,但结构体名不同,也是两个不同的结构类型。,例如,可

4、将日期定义为一个结构体: struct date int month; int day; int year; ;,结构体变量的定义 先定义结构体类型,再定义结构体变量 先定义结构体类型,再定义结构体变量 例如 在定义结构体类型的同时定义结构体变量 例如 直接定义结构体变量 例如,struct stu int num; char name20; char sex; int age; float score; struct date birthday; ; struct stu boy1,boy2;,struct stu int num; char name20; char sex; int ag

5、e; float score; struct date birthday; boy1,boy2;,struct int num; char name20; char sex; int age; float score; struct date birthday; boy1,boy2;,本章主要内容,10.1,10.2,10.3,10.4,10.5,结构体变量的定义,结构体变量的引用和初始化,结构体数组,结构体指针变量,结构体与函数,结构体变量的引用 引用方式: 结构体变量名.成员名 其中点号“.”称为成员运算符,它在所有的运算符中优先级最高。 引用结构体变量时,应注意以下几点 不能将一个结构体

6、变量作为一个整体进行输入输出 如果成员本身又是一个结构体类型,则要用若干个成员运算符逐级找到最低一级的成员才能引用 对成员变量可以像普通变量一样进行各种运算 可以引用结构体变量成员的地址,也可以引用结构体变量的地址,10.2 结构体变量的引用和初始化,例如,对前面定义的结构变量boy1和boy2,其成员的引用形式如下。 boy1.num /* 第一个人的学号 */ boy2.sex /* 第二个人的性别 */,结构体变量的初始化 本例中,对结构体变量boy1作了初始化赋值,然后把boy1的值整体赋予boy2,最后用printf函数输出boy2各成员的值。,例对结构变量初始化。 #include

7、 main() struct stu int num; char name20; char sex; int age; float score; boy2,boy1=102,“Zhang ping“,M,20,78.5; boy2=boy1; printf(“Number:%dnName:%sn“,boy2.num,boy2.name); printf(“Sex:%cnage:%dScore:%4.1fn“,boy2.sex,boy2.age,boy2.score); ,运行结果: Number:102 Name:Zhang ping Sex:M Age:20 Score:78.5,本章主要内

8、容,10.1,10.2,10.3,10.4,10.5,结构体变量的定义,结构体变量的引用和初始化,结构体数组,结构体指针变量,结构体与函数,结构体数组的定义 结构体数组的每一个元素都具有相同的结构体类型 三种形式:,形式一: struct student int num; char name20; char sex; int age; ; struct student stu2;,形式二: struct student int num; char name20; char sex; int age; stu2;,形式三: struct int num; char name20; char se

9、x; int age; stu2;,10.3 结构体数组,结构体数组初始化 一个结构体数组的元素相当于一个结构体变量,引用结构体数组元素的一般形式为 结构体数组名下标.成员名 例如,#include struct stu int num; char name20; char sex; float score; boy5= 101,“Li ping“,M,45, 102,“Zhang ping“,M,62.5, 103,“He fang“,F,92.5, 104,“Cheng ling“,F,87, 105,“Wang ming“,M,58 ; main() int i,c=0; float a

10、ve,s=0; for(i=0;i5;i+) s+=boyi.score; if(boyi.score60) c+=1; ave=s/5; printf(“average=%fncount=%dn“,ave,c); ,运行结果: average=69.000000 count=2,本章主要内容,10.1,10.2,10.3,10.4,10.5,结构体变量的定义,结构体变量的引用和初始化,结构体数组,结构体指针变量,结构体与函数,指向结构体变量的指针 定义形式:struct 结构体名 *结构体指针名; 例如struct stu boy,*pstu; 定义了结构体变量boy和结构体指针变量pstu

11、,通过赋值语句可使pstu指向boy, 构体指针可以访问结构体变量的各个成员,一般形式为 结构体指针变量-成员名 运算符“-”的优先级比较高,高于算术运算符、关系运算符、逻辑运算符 例如 +pstu-num 等价于 +(pstu-num) 结构体指针访问结构体变量的形式也可以表示为 (*结构体指针变量).成员名 例如 (*pstu).num 应该注意(*pstu)两侧的括号不可少,因为成员符“.”的优先级高于“*”,10.4 结构体指针变量,存放结构体变量在内存的起始地址,以下三种形式是等价 结构体变量名.成员名 (*结构体指针变量).成员名 结构体指针变量-成员名,结构指针变量的引用 #in

12、clude struct stu int num; char name20; char sex; float score; boy=102,“Zhang ping“,M,78.5,*pstu; main() pstu= ,运行结果: Number=102 Name= Zhang ping Sex=M Score=78.500000 Number=102 Name= Zhang ping Sex=M Score=78.500000 Number=102 Name= Zhang ping Sex=M Score=78.500000,指向结构体数组的指针 普通数组可以通过指针变量来访问,同样,也可以

13、通过结构体指针访问结构体数组。 例如 pstu=boy;或pstu= pstu就指向了该结构体数组的首地址(即第一个元素boy0的地址)。结构体指针pstu加1则指向下一个元素,用指针变量输出结构体数组。 #include struct stu int num; char name20; char sex; float score; boy5= 101,“Zhou ping“,M,45, 102,“Zhang ping“,M,62.5, 103,“Liu fang“,F,92.5, 104,“Cheng ling“,F,87, 105,“Wang ming“,M,58 ; main() str

14、uct stu *ps; printf(“NotNametttSextScoretn“); for(ps=boy;psnum,ps-name,ps-sex,ps-score); ,运行结果: No Name Sex Score 101 Zhou ping M 45.0 102 Zhang ping M 62.5 103 Liu fang F 92.5 104 Cheng ling F 87.0 105 Wang ming M 58.0,本章主要内容,10.1,10.2,10.3,10.4,10.5,结构体变量的定义,结构体变量的引用和初始化,结构体数组,结构体指针变量,结构体与函数,结构体变量

15、作为函数参数 结构体变量的成员可作为函数的实参,用法和普通变量作实参一样 例如,10.5 结构体与函数,显示学生的基本信息,利用结构体变量作为函数参数编程。 #include #include struct stu int num; char name20; char sex; float score; ; main() void list(struct stu student); struct stu student; student.num=101; strcpy(student.name, “Zhou ping“); student.sex=M; student.score=45; list(student); void list(struct stu student) printf(“Number=%dtName=%sn“,student.num,student.name); printf(“Sex=%cttScore=%fn“,student.sex,student.score); ,运行结

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

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

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