120 likes | 300 Views
第八讲 结构与联合. 参考书: 《C 程序设计 》 第十章 §10.1-§10.6,§10.8. 本讲主要内容. 结构的定义 结构变量说明 结构体的使用和初始化 结构数组 结构指针 结构体在函数间的传递 结构嵌套 联合体(共用体). 结构的定义. 结构的概念 是 C 语言中的构造类型,是由不同数据类型的数据 组成的集合体。 为处理复杂的数据结构提供了手段。 为函数间传递不同类型的参数提供了便利。 定义结构类型 struct 结构名 { 数据类型 成员名 1 ; 数据类型 成员名 2 ; :
E N D
第八讲 结构与联合 参考书:《C程序设计》第十章§10.1-§10.6,§10.8
本讲主要内容 • 结构的定义 • 结构变量说明 • 结构体的使用和初始化 • 结构数组 • 结构指针 • 结构体在函数间的传递 • 结构嵌套 • 联合体(共用体)
结构的定义 • 结构的概念 • 是C语言中的构造类型,是由不同数据类型的数据组成的集合体。 • 为处理复杂的数据结构提供了手段。 • 为函数间传递不同类型的参数提供了便利。 • 定义结构类型 struct 结构名 { 数据类型 成员名 1; 数据类型 成员名 2; : 数据类型 成员名 n; };
结构变量说明 • 变量说明形式 struct 结构名 结构变量名; • 注意: • 结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量、数组等完全一致。 • 结构变量说明必须在结构类型定义之后,二者也可同时进行。 • 结构变量占内存大小可用 sizeof 运算求出:sizeof(运算量) 例 1
结构体的使用和初始化 • 使用形式 • 一般情况下不能把结构体作为一个整体参加数据处理。 • 结构体成员的引用形式:结构变量名.成员名 • "."运算优先于"*"运算: *zhao.name 等同于 *(zhao.name) • 初始化 • 仅限于外部的和static型结构体 例 2
结构数组 • 具有相同结构的结构体也可以组成数组 • 结构数组的说明形式 struct 结构名 结构数组名[元素个数]; • 结构数组初始化 struct 结构名 结构数组名[]={初始数据}; 例 3 例 4
结构指针 • 概念 • 存放结构体首地址 • 结构指针的运算也按照C语言的地址运算原则进行。例如,结构指针加一将指向内存中下一个结构体。 • 说明形式:struct 结构名 *结构指针名; • 用结构指针访问结构成员 (*结构指针名).成员名 或 结构指针名->成员名 • 运算次序 ++pman->name 等同于 ++(pman->name)*pman->name 等同于 *(pman->name) 例 5
结构体在函数间的传递 • 以结构体变量作为函数参数 • 传递结构体首地址 • 结构型函数 • 结构指针型函数 例 6 例 7 例 8
结构嵌套 • 结构的成员项是结构体 • 参加运算和操作的只能是最内层结构的成员项 • 内层结构成员的引用形式: 结构变量名.外层成员名.内层成员名
联合体(共用体) • 定义形式: union 联合名 { 数据类型 成员名 1; 数据类型 成员名 2; : 数据类型 成员名 n; }; • 引用形式: 联合名.成员名
uarea c_data s_data l_data 例: union uarea { char c_data; short s_data; long l_data; } 例 9
作业 • 复习: 第十章 §10.1-§10.6,§10.8 • 10.2, 10.3, 10.4, 10.5 • 预习: 第八章、第十一章