南京大学:《C语言程序设计》课程教学资源(PPT课件)第十一章 结构体与共用体(姜恒远)

第11章结构体与共用体
1 第11章 结构体与共用体

111概述 C语言定义的几种基本数据类型,它们有规定 的类型说明符、数据长度及数据组织和存储形式 程序设计时可直接用它们来定义数据对象。 在实际应用中仅有这些基本数据类型是不够的, 为了增强数据的表示能力能够使用各种数据,常需 要各种新的数据类型来满足问题求解的需要。 例如一个传统的例子:
2 11.1 概述 C语言定义的几种基本数据类型,它们有规定 的类型说明符、数据长度及数据组织和存储形式, 程序设计时可直接用它们来定义数据对象。 在实际应用中仅有这些基本数据类型是不够的, 为了增强数据的表示能力,能够使用各种数据,常需 要各种新的数据类型来满足问题求解的需要。 例如,一个传统的例子:

假定要建立员工的简单档案为了反映每一个员 工的基本情况如果把员工的姓名、性别、年龄、 职称、工资、电话号码和家庭住址等不同类型的 数据项分别用单独的变量表示,就不能很好地反 映与一员工相关的诸数据项之间的关系,且很难 有效地组织、处理和使用它们
3 假定要建立员工的简单档案,为了反映每一个员 工的基本情况,如果把员工的姓名、性别、年龄、 职称、 工资、电话号码和家庭住址等不同类型的 数据项分别用单独的变量表示, 就不能很好地反 映与一员工相关的诸数据项之间的关系, 且很难 有效地组织、处理和使用它们

如果能把这些相关的数据项组织在一起定义成 一种新的、独立的数据类型,再定义一个实际的对 象与之相联系,那么这个对象便代表了某个员工,访 问这个对象就可获得该员工的全部信息。显然这对 组织、处理复杂的数据十分便利有效的。 为了能满足这类问题的需要,C语言允许用户 自定义各种不同的数据类型,并用它们定义与之相 关的对象。 本章将讨论用户自定义数据类型的定义及相应 数据对象的定义和使用
4 如果能把这些相关的数据项组织在一起, 定义成 一种新的、独立的数据类型,再定义一个实际的对 象与之相联系,那么这个对象便代表了某个员工,访 问这个对象就可获得该员工的全部信息。显然这对 组织、处理复杂的数据十分便利有效的。 为了能满足这类问题的需要 ,C语言允许用户 自定义各种不同的数据类型, 并用它们定义与之相 关的对象。 本章将讨论用户自定义数据类型的定义及相应 数据对象的定义和使用

12定义结构体类型及结构变量的方法 什么是结构类型 一个结构是将一个或多个不同类型的数据有序 地组织在一起,并为之确定一个名字所构成的 种数据类型。 不同名的结构代表一种不同的数据类型,即使 两个结构具有完全相同的成员项,但结构名字不 同也表示两种不同的数据类型
5 11.2 定义结构体类型及结构变量的方法 1、 什么是结构类型? 一个结构是将一个或多个不同类型的数据有序 地组织在一起,并为之确定一个名字所构成的一 种数据类型。 不同名的结构代表一种不同的数据类型,即使 两个结构具有完全相同的成员项,但结构名字不 同也表示两种不同的数据类型

定义一个结构就是命名一个结构并说明它的组 成情况。目的是让程序中的函数知道,存在这样的 种数据类型,可用它来定义与之相关的数据对象。 结构的一般定义形式为: struct结构类型名{ 数据类型1成员名1; 数据类型2成员名2 数据类型n成员名n
6 定义一个结构就是命名一个结构并说明它的组 成情况。目的是让程序中的函数知道,存在这样的 一种数据类型,可用它来定义与之相关的数据对象。 结构的一般定义形式为: struct 结构类型名{ 数据类型1 成员名1 ; 数据类型2 成员名2 ; ……… 数据类型n 成员名n ; } ;

其中 struct 指出一个结构定义的开始; 结构类型名 是对该结构类型的命名,按标识符的构成 规则确定; 一对括号中定义了组成该结构类型的诸成 员项,每个成员项由成员的名字、成员的 数据类型和一个分号组成。一个结构中成 员项的多少、顺序没有限制
7 其中: struct 指出一个结构定义的开始; 结构类型名 是对该结构类型的命名,按标识符的构成 规则确定; {…} 一对括号中定义了组成该结构类型的诸成 员项,每个成员项由成员的名字、成员的 数据类型和一个分号组成。一个结构中成 员项的多少、顺序没有限制

数据类型; 用来指出对应成员项的数据类型,它可以是 任何数据类型名: ■C中固有的那些数据类型说明符,如int、foat char、 double等; ■也可以是本程序中已经定义的另一个结构类型 名,因结构名是一种自定义数据类型名; 特别,“数据类型”还可以是本身的结构类型名 但其后的成员名只能是指针变量名,非指针变量 名是错误的
8 C中固有的那些数据类型说明符,如int、float、 char、double等; 也可以是本程序中已经定义的另一个结构类型 名,因结构名是一种自定义数据类型名; 特别, “数据类型i” 还可以是本身的结构类型名 , 但其后的成员名只能是指针变量名,非指针变量 名是错误的。 数据类型i 用来指出对应成员项的数据类型,它可以是 任何数据类型名:

成员名 按标识符组成规则确定。“成员名”和“结构 类型名”可与函数或程序中的其他对象名及其他结 构中的成员名相同,不产生矛盾。C编译程序总是 根据上、下文来区别它们。 结构定义形式是一个整体,在程序中是作为 个定义语句(声明语句)出现的。因此括住诸成员 项说明的一对大括号和最后的分号不能遗漏,否则 引起错误
9 按标识符组成规则确定。 “成员名i” 和 “结构 类型名” 可与函数或程序中的其他对象名及其他结 构中的成员名相同, 不产生矛盾。C编译程序总是 根据上、下文来区别它们。 成员名i 结构定义形式是一个整体,在程序中是作为一 个定义语句(声明语句) 出现的。因此括住诸成员 项说明的一对大括号和最后的分号不能遗漏,否则 引起错误

又因为它是一个声明语句,所以一个结构定义 可以在函数的内部和函数的外部进行。 最后必须强调,上述形式的结构定义仅是描述 了一个结构的组成情况,或者说只是定义了一种类 型为“结构类型名”的数据类型,c编译程序并不 给这样的定义分配对应的空间,因为它不是一个实 际的数据对象。 下面是一个结构定义的典型例子
10 又因为它是一个声明语句,所以一个结构定义 可以在函数的内部和函数的外部进行。 最后必须强调,上述形式的结构定义仅是描述 了一个结构的组成情况, 或者说只是定义了一种类 型为 “结构类型名”的数据类型,C编译程序并不 给这样的定义分配对应的空间,因为它不是一个实 际的数据对象。 下面是一个结构定义的典型例子
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第六章 循环控制(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第八章 函数(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第五章 选择结构程序设计(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第九章 预处理命令(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第三章 数据类型、运算符与表达式(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第七章 数组(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第一章 C语言概述(姜恒远).ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第十章 搜索与散列.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 排序.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第八章 图.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 集合与搜索.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树与森林.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 递归.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第四章 栈与队列.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第三章 链表.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 数组.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:殷人昆).ppt
- 清华大学:《数据结构》课程教学资源(练习答案)第十章答案.doc
- 清华大学:《数据结构》课程教学资源(练习答案)第九章答案.doc
- 清华大学:《数据结构》课程教学资源(练习答案)第八章答案.doc
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第十三章 文件(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第十章 指针(姜恒远).ppt
- 南京大学:《C语言程序设计》课程教学资源(PPT课件)第四章 最简单的C程序设计——顺序结构程序设计(姜恒远).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)期末总复习.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)绪论、第一章 命题逻辑(主讲:许桂清).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第二章 谓词逻辑.ppt
- 东北大学:《离散数学》课程教学资源(试题)2001级总本.doc
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 华中科技大学出版社:《深度探索C++对象模型》PDF电子书(候捷).pdf
- 21世纪高职高专规划教材:《计算机网络技术实训教程》PDF电子书(共八章)(史秀璋).pdf
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)课程简介.ppt
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)第一章 初步知识.ppt
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)第二章 数据类型、运算符、表达式.ppt
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)第三章 结构化程序设计.ppt
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)第四章 模块化与函数.ppt
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)作用域和生存期.ppt
- 上海交通大学:《C++程序设计》课程教学课件(PPT讲稿)第五章 数组.ppt