第8章结构体与联合体
第8章 结构体与联合体
8.1程序与程序文件 82结构体数组 8.3结构体与指针 84链表 一85联合体 8.6枚举类型与自定义类型名 8.7程序举例
8.1 程序与程序文件 8.2 结构体数组 8.3 结构体与指针 8.4 链 表 8.5 联 合 体 8.6 枚举类型与自定义类型名 8.7 程序举例
8.1程序与程序文件 81.1结构体类型变量的定义 定义结构类型变量包括两个方面:首先要定义结构体 类型,以便确定该类型中有哪些成员,各成员属于什么数 据类型;然后再定义属于该结构体类型的变量
8.1 程序与程序文件 8.1.1 结构体类型变量的定义 定义结构类型变量包括两个方面:首先要定义结构体 类型,以便确定该类型中有哪些成员,各成员属于什么数 据类型;然后再定义属于该结构体类型的变量
定义结构体类型 定义结构体类型的一般形式如下: struct结构体类型名 成员表}; 其中在“成员表”中定义了该类型中有哪些成员, 各成员属于什么数据类型
1.定义结构体类型 定义结构体类型的一般形式如下: struct 结构体类型名 { 成员表}; 其中在“成员表”中定义了该类型中有哪些成员, 各成员属于什么数据类型
2.定义结构体类型变量 定义结构体类型变量的一般形式为 struct结构体类型名变量表; 定义结构体类型与定义结构体类型变量是分开说明 的。C语言还允许在定义结构体类型的同时定义结构体 类型变量。其形式为 struct结构体类型名 {成员表}变量表;
2.定义结构体类型变量 定义结构体类型变量的一般形式为 struct 结构体类型名 变量表; 定义结构体类型与定义结构体类型变量是分开说明 的。C语言还允许在定义结构体类型的同时定义结构体 类型变量。其形式为 struct 结构体类型名 { 成员表 } 变量表;
如果在函数体外定义了一个结构体类型,则从 定义位置开始到整个程序文件结束之间的所有函数 中均可定义该类型的变量;但在函数体内所定义的 结构体类型,只能在该函数体内能定义该类型的变 量。即结构体类型的定义与普通变量定义的作用域 是相同的
如果在函数体外定义了一个结构体类型,则从 定义位置开始到整个程序文件结束之间的所有函数 中均可定义该类型的变量;但在函数体内所定义的 结构体类型,只能在该函数体内能定义该类型的变 量。即结构体类型的定义与普通变量定义的作用域 是相同的
结构体类型变量的引用 在程序中定义了某结构体类型的变量后就可以被引用。 结构体变量的一般引用方式如下: 结构体变量名成员名 其中“.”为结构体成员运算符,它的优先级最高
8.1.2 结构体类型变量的引用 在程序中定义了某结构体类型的变量后就可以被引用。 结构体变量的一般引用方式如下: 结构体变量名.成员名 其中“.”为结构体成员运算符,它的优先级最高
结构体的嵌套 C语言规定,结构体类型的定义可以嵌套
8.1.3 结构体的嵌套 C语言规定,结构体类型的定义可以嵌套
结构体类型变量的初始化 与普通变量一样,在定义结构体类型变量的同时也 可以对结构体类型变量赋初值。但C语言规定,只能对 全局的或静态的局部结构体类型变量进行初始化。为了 将结构体类型变量定义为静态存储类型,在定义时应加 上 static关键字。但是,目前在大部分计算机系统中,对 结构体类型变量初始化时不必加 static关键字,其原理与 普通数组的初始化一样
8.1.4 结构体类型变量的初始化 与普通变量一样,在定义结构体类型变量的同时也 可以对结构体类型变量赋初值。但C语言规定,只能对 全局的或静态的局部结构体类型变量进行初始化。为了 将结构体类型变量定义为静态存储类型,在定义时应加 上static关键字。但是,目前在大部分计算机系统中,对 结构体类型变量初始化时不必加static关键字,其原理与 普通数组的初始化一样
结构体与函数 结构体类型变量的成员作为函数参数 与数组元素可以作为函数参数一样,结构体类型 变量中的成员也可以作为函数参数。在这种情况下, 在被调用函数中的形参是一般变量,而调用函数中的 实参是结构体类型变量中的一个成员,但要求它们的 类型应一致
8.1.5 结构体与函数 1.结构体类型变量的成员作为函数参数 与数组元素可以作为函数参数一样,结构体类型 变量中的成员也可以作为函数参数。在这种情况下, 在被调用函数中的形参是一般变量,而调用函数中的 实参是结构体类型变量中的一个成员,但要求它们的 类型应一致