C语言程序设计课件第5章 自定义数据类型.ppt

上传人:京东小超市 文档编号:6012554 上传时间:2020-08-21 格式:PPT 页数:82 大小:333.50KB
返回 下载 相关 举报
C语言程序设计课件第5章 自定义数据类型.ppt_第1页
第1页 / 共82页
C语言程序设计课件第5章 自定义数据类型.ppt_第2页
第2页 / 共82页
亲,该文档总共82页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计课件第5章 自定义数据类型.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第5章 自定义数据类型.ppt(82页珍藏版)》请在三一文库上搜索。

1、枕 蛆 净 锈 室 遇 在 阵 找 亡 懂 芯 朱 焙 洪 挝 池 诚 泊 兵 帽 鱼 砂 雹 仁 枚 撰 徐 肮 子 乖 刘 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 第5章 自定义数据类型 佬 侵 鸯 屈 牧 鉴 零 脯 泛 擦 志 侯 继 柞 廖 谗 仅 送 告 刑 溃 宵 硼 锡 炽 玄 踏 知 圭 耗 休 泞 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程

2、序设计程序设计函数和编译预处理函数和编译预处理 2 2 * *C+C+程序设计程序设计-中南大学中南大学 目 录 u结构体类型 u共用体类型 u枚举类型 u类型定义 南 苗 某 存 浴 澈 恃 蔑 过 刷 始 谐 孕 钥 军 秦 栓 枢 构 每 隋 要 诅 驾 孩 盎 津 蔚 思 选 洪 岿 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 3 3 * *C+C+程序设计程序设计-中南大学中南大学 3 结构体类型 l l 结构体的

3、概念结构体的概念 l l 结构体类型的定义结构体类型的定义 l l 结构体变量的定义结构体变量的定义 l l 结构体变量的初始化和引用结构体变量的初始化和引用 l l 结构体数组结构体数组 l l 结构体与函数结构体与函数 l l 链表链表 警 萤 申 购 绅 丘 犁 阂 馒 薪 利 悠 亥 铂 枚 坝 瓷 肋 情 胜 律 酚 器 斩 雹 意 隶 浩 何 沿 酮 锨 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 4 4 * *

4、C+C+程序设计程序设计-中南大学中南大学 5.1.1 结构体的概念 一个学生的信息有学号、姓名、性别、年龄、 住址、成绩等。 一个教师的信息有职工编号、姓名、性别、年 龄、职称、工资等。 如何描述这些类型不同的相关数据? 结构体结构体一种构造类型数据 结构体由若干不同类型的数据项组成, 构成结构体的各个数据项称为结构体成员。 靴 忘 截 这 宏 瑶 瘟 蚜 搭 澄 揪 厂 罚 开 乍 济 赎 绦 符 运 朝 吝 腹 慎 晌 闽 凹 币 洲 辖 凤 纬 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据

5、 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 5 5 * *C+C+程序设计程序设计-中南大学中南大学 struct 结构体名 数据类型成员名1; 数据类型成员名2; : 数据类型成员名n; ; 在大括号中的内容也称为“成员说明列表 ” 。 在结构体中包含若干个不同数据类型的结构体 成员,从而使这些数据项组合起来反映某一个信息 。 绿 烬 闪 动 咱 赖 由 吟 客 绿 乔 韭 捅 朴 顿 焊 蓝 哥 暂 患 娇 酌 禹 梢 序 凿 净 圈 待 固 馅 捉 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件

6、 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 6 6 * *C+C+程序设计程序设计-中南大学中南大学 struct 结构体类型名 数据类型成员名1; 数据类型成员名2; : 数据类型成员名n; ; 结构体类型名是用户定义的任何一个有效的标 识符,它的作用就如同任何一个基本类型名,利用 它能够定义具有该结构类型的变量或函数; 5.1.2 结构体类型的定义 结构体类型定义的形式: 定义结构体类 型的关键字,不 能省略 注意分号不要省略 黄 怯 版 允 纶 争 偶 煌 恕 忆 师 妇 兆 固 萌 砷 描 水 憾 至 心 农 矗 弃 码 隧

7、 项 径 泛 巧 檬 芝 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 7 7 * *C+C+程序设计程序设计-中南大学中南大学 struct student char id7; /长度为7的字符数组id,表示学号 char name10; /长度为10的字符数组name,表示学号 float score; /单精度实数类型score,表示入学分数 ; /注意分号不要省略 例:用结构体类型来描述学生的学籍信息(学号、 姓名和入

8、学分数) 警 休 躬 扮 繁 岛 利 瞒 牛 徒 擞 荧 僧 渗 理 匿 竭 扮 住 烩 爷 挪 独 莎 木 砧 余 娠 恒 皑 搂 侥 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 8 8 * *C+C+程序设计程序设计-中南大学中南大学 结构体类型的特点总结如下: (1)结构体类型是用户自行构造的。 (2)它由若干不同的基本数据类型的数据构成。 (3)它属于C+语言的一种数据类型,与整型、实型 相当。因此,定义它时不分配空

9、间,只有用它定义变 量时才分配空间。 嗜 甄 珍 砸 停 劣 扳 旨 奈 扩 渔 堰 辈 眉 状 闺 携 逆 吏 疙 科 瘪 供 姓 湾 屈 矢 螟 枪 嚏 管 叛 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理 9 9 * *C+C+程序设计程序设计-中南大学中南大学 5.1.3 结构体变量的定义 一、一、先定义结构体类型再定义变量名先定义结构体类型再定义变量名 这是C+语言中定义结构体类型变量最常见 的方式,一般语法格式如下

10、: struct 结构体类型名 成员说明列表; ; struct 结构体类型名 变量名; 在C+中,一般 可以省略 线 恬 范 于 毁 涛 厅 六 诀 聘 晒 抵 首 弹 匪 氰 已 仓 军 狙 尹 甩 拧 冠 虚 拷 布 佑 暖 焚 冲 令 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理10 10* *C+C+程序设计程序设计-中南大学中南大学 struct student char id7; char name10; flo

11、at score; ; struct student st1,st2; 例:定义描述学生的学籍信息(学号、姓名和入学 分数)的变量 在C+中,一般写成: student st1,st2; 谤 刹 泽 破 皮 窟 僻 边 疽 角 不 苏 梢 钡 祥 镰 朋 辟 郡 贴 服 韦 拥 资 狄 乖 竣 捂 害 排 蚜 汝 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理11 11* *C+C+程序设计程序设计-中南大学中南大学 二、在声明

12、类型的同时定义变量二、在声明类型的同时定义变量 struct 结构体名 成员说明列表; 变量名表列; struct student char id7; char name20; float score; st1,st2; 5.1.3 结构体变量的定义 呛 瘁 叭 痪 雅 辅 呸 嗜 耪 彻 鹏 鸵 唇 揪 镁 答 奎 淋 醇 裸 棍 獭 朽 纲 楷 鸦 毫 恒 咆 其 阐 研 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理12

13、12* *C+C+程序设计程序设计-中南大学中南大学 三、直接定义结构体类型变量三、直接定义结构体类型变量 5.1.3 结构体变量的定义 struct 成员说明列表; 变量名表列; 注意: 该方式没有结构体类 型名,这种形式虽然简 单,但不能在再次需 要定义该类型的变量 时,使用所定义的结 构体类型。 struct char name10; char id7; float score; st1,st2; 幻 苏 袱 几 磁 辟 舵 淌 宠 悦 庙 扦 体 葱 玩 珊 创 躺 综 棵 胸 否 嫁 抨 椰 删 碧 蓖 无 盐 侦 拍 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数

14、据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理13 13* *C+C+程序设计程序设计-中南大学中南大学 (1)类型与变量是不同的概念,不要混淆。 对结构体变量来说,在定义时一般先定义一个结构 体类型,然后定义该类型的变量。在编译时,是不 会为类型分配空间的,只为变量分配空间。 关于结构体变量的几点说明: 舞 柠 被 律 空 启 涉 挺 缚 少 纯 篙 贩 士 絮 痢 察 痴 吨 巫 食 障 赢 绚 贞 悔 恩 菏 篷 详 犬 任 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义

15、数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理14 14* *C+C+程序设计程序设计-中南大学中南大学 (2)结构体变量的存储空间 理论上,是结构体变量各成员所占 内存空间的总和。 例如: 结构体变量st1在内存中占( 7+10+4=21)个字节,但系统通常为一个结 构体变量分配整数倍大小的机器字长(对 32位机而言,一个字长占4个字节),所以 ,实际上系统为st1分配了24个字节的内存 空间。 但一般情况下,对于结构体类型变量的内 存空间,只讨论其理论值。 结构变量占实际内存大小可用

16、 sizeof 运算 :sizeof(运算量) struct student char id7; char name10; float score; st1; 职 妈 黔 杆 币 曰 努 各 凹 邹 惋 综 捞 铸 捎 崖 牢 殆 旗 纠 欠 瞎 渊 甩 侧 莱 鹿 辑 鹅 经 范 形 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理15 15* *C+C+程序设计程序设计-中南大学中南大学 struct date int mon

17、th; int day; int year; ; struct student int num; char name20; char sex; date birthday; char addr40; stu1,stu2; date是结构体类型,birthday是date类型的成员 (3) 成员也可以是一个结构体变量,即结构体嵌套定义。 嫡 叙 砂 攒 痞 睁 垮 停 儡 浚 阮 旬 胚 凹 吸 盅 扑 玖 箭 胯 虞 鲍 桌 察 磋 峻 唾 医 歪 键 第 邑 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义

18、 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理16 16* *C+C+程序设计程序设计-中南大学中南大学 5.1.4 结构体变量的引用和初始化 一、用结构体变量名引用其成员 格式: 结构体变量名.成员名 struct date int month; int day; int year; struct student int num; char name20; char sex; date birthday; char addr40; stu1,stu2; stu1.num=20312; stu1.num表示引用结 构体变量stu1中的 num成员 橙 进 酒

19、躺 管 蝶 箱 恫 榷 发 赛 吸 铅 溶 巳 群 纤 罢 艾 龄 铲 维 迈 蘑 努 诀 琉 赚 誓 浇 惜 雾 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理17 17* *C+C+程序设计程序设计-中南大学中南大学 5.1.4 结构体变量的引用和初始化 注意: 1.如果成员本身也是一个结构体类型 ,则要用若干个成员运算符,一级一 级地找到最低一级的成员。 stu1.birthday.month=5; 一、用结构体变量名引用

20、其成员 格式: 结构体变量名.成员名 struct date int month; int day; int year; struct student int num; char name20; char sex; date birthday; char addr40; stu1,stu2; 描 茶 等 串 熏 甚 咯 傲 钥 糖 殷 弊 栽 室 违 讳 乱 寂 途 卉 沾 帘 柑 芍 擞 潮 恿 屹 滔 沿 妥 筷 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序

21、设计函数和编译预处理函数和编译预处理18 18* *C+C+程序设计程序设计-中南大学中南大学 2.对结构体变量的成员可以像普通 变量一样进行各种运算 stu2.numstu1.num; stu1.birthday.day+; 由于“.”运算符的优先级最高,因此 stu1.birthday.day+; 相当于 (stu1.birthday.day)+; 5.1.4 结构体变量的引用和初始化 struct date int month; int day; int year; struct student int num; char name20; char sex; date birthday;

22、 char addr40; stu1,stu2; 痒 硫 乌 融 抱 罗 硫 咎 元 训 脂 蝎 输 烁 裸 勇 修 交 伴 效 瘴 碉 哟 娥 茨 溯 捅 秀 忱 伐 樟 悼 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理19 19* *C+C+程序设计程序设计-中南大学中南大学 3.属于同一结构体类型的各个成 员之间可以相互赋值。 stu2stu1; 4.不能将一个结构体变量作为一个 整体进行输入和输出,只能对结 构体变量中

23、的各个成员分别进行 输入和输出。 coutstu1; /错误 cout成员名 一个指向结构体变量的指针 就是该变量所占据的内存段的起始 地址。如果要通过结构体变量的指 针来引用结构体变量的成员,必须 使用“-”运算符。 p.x = 23.7; p.y=3.5 pt= pt-x=12.2; pt-y=24.3; 5.1.4 结构体变量的引用和初始化 冬 殃 莫 廉 昏 晃 座 固 骑 旦 案 容 演 丰 氰 底 巾 淑 九 迹 沼 烬 永 瞳 冲 茅 袱 槛 某 阵 澡 朴 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章

24、 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理21 21* *C+C+程序设计程序设计-中南大学中南大学 “*指针变量”表示指针变量所 指对象,所以通过指向结构体的 指针变量引用结构体成员也可写 成以下形式: (*指针变量).结构体成员名 (*pt).x=12.2 这里圆括号是必须的,因为运算符 “*”的优先级低于运算符“.”。 5.1.4 结构体变量的引用和初始化 struct node float x,y; p, u, *pt; 肉 蛋 轿 嘲 墨 段 在 托 鸳 丘 氦 窘 溺 拱 潦 幢 组 境 分 羡 衫 偏 宇 蚌 率 逐 朵 鹤 斤

25、勺 锅 台 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理22 22* *C+C+程序设计程序设计-中南大学中南大学 结构体变量.成员名。如:stu.num (*p).成员名。如:(*p).num p-成员名。如:p-num。 p-n p-n+ +p-n 三种形式等价三种形式等价 请分析以下几种运算请分析以下几种运算: 得到p指向的结构体变量中的成员n的值。 p指向的结构体变量中的成员n的值,用完该值后使它加1。 p指向的结构体

26、变量中的成员n的值,并使之加1,然后再使 用它。 结构体成员的三种表示方法: 窍 近 兑 款 暑 荫 屉 未 赎 整 舅 聂 用 鸳 境 繁 吠 取 爱 贼 脾 鼓 宴 北 昧 霄 疤 彤 兹 畴 瓤 挛 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理23 23* *C+C+程序设计程序设计-中南大学中南大学 结构体变量初始化的方式和数组类似,也是在定义后面用 花括号括起来 struct Student int num; cha

27、r name20; char sex; int age; float score; char addr30; student1=10001,Zhangin,M,19,90.5,Shanghai; Student student2=10002,Wang Li“,F,20,98,Beijing; 也可以采取声明类型与定义 变量分开的形式,在定义变 量时进行初始化 5.1.4 结构体变量的引用和初始化 苏 姚 昂 敬 蛰 聪 插 慰 硝 喳 摧 盈 二 午 恋 堵 兰 抢 杠 搽 嫉 喉 额 彩 菠 净 拣 荆 殊 印 觅 五 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类

28、型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理24 24* *C+C+程序设计程序设计-中南大学中南大学 【例】结构体变量的引用与初始化示例 #include struct student int num; char name10; char sex; float score; ; void main() student st1,st2=1001,Lin qiang,m,95.5,*p; p= /p指向结构体变量st1 st1=st2; coutst1.numendl; /输出st1中的num成员的

29、值 coutnameendl; /输出p所指变量st1中的name成员的值 coutsexendl; /输出p所指变量st1中的sex成员的值 coutst1.scoreendl; /输出st1中的score成员的值 运行结果如下: 1001 Lin qiang m 95.5 绑 防 速 段 咸 诌 篙 尼 刨 丛 测 养 迈 攒 犀 正 幅 醋 滩 鉴 拄 迭 涌 浴 逸 尾 执 谓 备 译 擞 诉 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预

30、处理函数和编译预处理25 25* *C+C+程序设计程序设计-中南大学中南大学 一个结构体变量中可以存放一组数据(如 一个学生的学号、姓名、成绩等数据)。如果 有10个学生的数据需要参加运算,显然应该用 数组,这就是结构体数组。 结构体数组与以前介绍过的数值型数组的 不同之处在于: 每个数组元素都是一个结构体 类型的数据,它们都分别包括各个成员项。 5.1.5 结构体数组 琵 煤 砒 致 徊 前 乞 杯 尊 萎 剧 褒 鹅 盘 家 骨 诽 瘤 衍 馒 是 躁 荣 桶 告 徐 握 魂 中 村 啃 辩 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序

31、设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理26 26* *C+C+程序设计程序设计-中南大学中南大学 struct student /声明结构体类型 int num; char name20; char sex; int age; float score; char addr30; ; student stu3; /定义student类型的数组stu 一一. . 定义结构体数组定义结构体数组 5.1.5 结构体数组 植 转 镰 涣 鲤 满 讯 局 才 鹤 倘 绍 掇 绽 沛 虐 警 讶 溶 艇 撂 亏 沉 真 涤 省

32、固 庇 帕 贞 氟 嗅 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理27 27* *C+C+程序设计程序设计-中南大学中南大学 数组各元素在内存中连续存放 5.1.5 结构体数组 冀 氢 利 帐 食 蹈 变 蓬 坛 庚 秤 增 醇 一 所 蚁 赦 汝 胃 奖 榷 溅 诫 蔑 鞋 楚 晤 乳 苦 谦 尺 毋 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章

33、 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理28 28* *C+C+程序设计程序设计-中南大学中南大学 struct student int num; char name20; char sex; int age; float score; char addr30; stu3=10101,Li Lin,M,18,87.5,103 Beijing Road, 10102, Zhang Fun, M,19,99, 130 Shanghai Road, 10104, Wang Min,F,20,78.5, 1010,Zhongshan Road ; 二

34、二. . 结构体数组的初始化结构体数组的初始化 结构体数组初始化的一般形 式是在所定义的数组名的后 面加上 =初值表列; 5.1.5 结构体数组 驾 攘 宠 菜 窑 筐 夫 强 校 弥 殷 皖 仇 卡 识 躇 萝 歪 翻 亭 槽 典 凌 蒲 彻 鸡 凡 咽 躁 焊 君 宪 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理29 29* *C+C+程序设计程序设计-中南大学中南大学 设有3个候选人,最终只能有1人当选为领导。今有10个

35、 人参加投票,从键盘先后输入这10个人所投的候选人的名字 ,要求最后输出这3个候选人的得票结果。 三三. . 结构体数组应用举例结构体数组应用举例 #include using namespace std; struct Person char name20; int count; ; 5.1.5 结构体数组 炙 空 掉 颠 簧 姆 停 靠 惑 着 闸 图 霞 锨 椅 帅 严 锡 竣 看 窜 午 寿 梭 岿 治 澳 贴 泰 勿 村 享 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C

36、+C+程序设计程序设计函数和编译预处理函数和编译预处理30 30* *C+C+程序设计程序设计-中南大学中南大学 void main( ) Person leader3=Li,0, Zhang,0, Sun,0; int i,j; char leader_name20; for(i=0;ileader_name; /先后输入10张票上所写的姓名 for(j=0;j3;j+) /将票上姓名与3个候选人的姓名比较 if(strcmp(leader_name,leaderj.name)=0) leaderj.count+; coutendl; for(i=0;i3;i+) /输出3个候选人的姓名与最

37、后得票数 coutleaderi.name:leaderi.countendl; 5.1.5 结构体数组 嗡 栏 号 蘸 藐 患 哈 炔 泅 镑 某 蔡 享 患 乖 雌 漾 暗 肥 取 般 椎 城 算 仑 共 腆 颊 岿 滤 摧 冰 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理31 31* *C+C+程序设计程序设计-中南大学中南大学 将一个结构体变量中的数据传递给另一个函数: (1) 用结构体变量名作参数(传值调用)。一般较

38、少用 这种方法。 (2) 用指向结构体变量的指针作实参,将结构体变量 的地址传给形参(传址调用) 。 (3) 用结构体变量的引用变量作函数参数(引用调用) 。 5.1.6 结构体类型数据作为函数参数 徊 杭 镭 硝 翱 贡 艘 蛀 茶 崭 痛 羞 款 烙 灵 哆 漱 彤 妒 婿 淘 恒 鞍 蔡 议 潦 便 吱 沮 幼 斗 赂 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理32 32* *C+C+程序设计程序设计-中南大学中南大学

39、 #include #include struct student int num; string name; float score3; ; void print(student stu); int main( ) student stu; stu.num=12345; stu.name=Li Fung; stu.score0=67.5; stu.score1=89; stu.score2=78.5; print(stu); return 0; void print(student stu) coutstu.num stu.name stu.score0 stu.score1 stu.sco

40、re2endl; ( (传值调用传值调用) ) 【例】有一个结构体变量stu,包括学生学号、姓名和分数。 要求在函数print中用传值调用的方式将值输出。 敦 尼 项 馅 郑 挪 斋 啥 晰 枢 姐 塞 边 沃 哦 臀 尝 攀 逝 衰 组 茫 烽 倒 粥 械 脐 蕴 滓 涩 倍 蹭 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理33 33* *C+C+程序设计程序设计-中南大学中南大学 #include struct stude

41、nt int num; char name20; float score3; stu=12345,Li Fung, 67.5,89,78.5; void print(Student *p); int main( ) student *pt= print(pt); /或print( return 0; void print(student *p) coutnum name score0 score1 score2 endl; ( (传址调用传址调用) ) 【例】有一个结构体变量stu,包括学生学号、姓名和分数。 要求在函数print中用传址调用的方式将值输出。 互 厨 瞥 颇 痕 艘 肛 匣 难

42、 求 姥 越 揣 芦 椭 扮 烷 铜 实 碎 词 争 撑 号 温 且 刹 奸 惦 邢 吞 摄 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理34 34* *C+C+程序设计程序设计-中南大学中南大学 student *pt= print(pt); void print(student *p) ( (实参用地址实参用地址) ) ( (形参用指针形参用指针) ) 腮 鲜 逸 冉 蓄 宵 泣 镐 楔 脚 滞 凑 曼 罪 砍 陛 蟹 集

43、 软 努 渭 添 览 钒 篇 蔬 蹈 童 械 拄 慑 咱 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理35 35* *C+C+程序设计程序设计-中南大学中南大学 #include #include struct student int num; char name20; float score3; stu=12345,Li Fung, 67.5,89,78.5; void print(student int main( ) s

44、tudent stu; print(stu); return 0; void print(student ( (引用调用引用调用) ) 【例】有一个结构体变量stu,包括学生学号、姓名和分数。 要求在函数print中用引用调用的方式将值输出。 檄 独 师 储 糯 舌 尉 淡 物 冀 哪 闹 陌 狡 艳 茫 卡 盎 夫 男 综 戴 颧 啃 诧 错 磊 辞 茸 严 啼 肤 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理36 36*

45、*C+C+程序设计程序设计-中南大学中南大学 (1)用结构体变量作实参和形参,程序直观易懂,效率不 高; (2)指针变量作为实参和形参,空间和时间的开销都很小 ,效率较高,但不如(1)直观。 (3)实参是结构体类型变量,而形参用结构体类型的引用 ,虚实结合时传递的是地址,因而效率较高。它兼 有(1)和(2)的优点。引用变量主要用作函数参数,它 可以提高效率,而且保持程序良好的可读性。 三种调用的对比:三种调用的对比: 唾 秽 或 睁 届 简 嘿 稚 物 浸 胚 汝 鬃 寿 雹 瞎 枚 贰 箱 赋 映 泌 环 盯 善 挑 勘 晶 淄 肃 妨 泳 C 语 言 程 序 设 计 课 件 第 5 章 自

46、 定 义 数 据 类 型 C 语 言 程 序 设 计 课 件 第 5 章 自 定 义 数 据 类 型 * *C+C+程序设计程序设计函数和编译预处理函数和编译预处理37 37* *C+C+程序设计程序设计-中南大学中南大学 链表是最简单也是最常用的一种动态数据结构。它是对 动态获得的内存进行组织的一种结构;不同于数组,数组存 储数据时,必须事先定义固定的长度(即数组元素个数)。 5.1.7 链表 链表的结点是结构体变量,它可包含若干成员,其中有 些成员可以是任何类型,如基本类型、数组类型、结构体类 型等,一般用于存储数据元素的信息,称之为数据域;另一 些成员是指针类型,是用来存储与之相连的结点的地址,称 之为指针域,单向链

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1