注:(1)由于第三种定义方法没有定义类型名, 也就无法再定义这种类型的变量。建议使用前两 种方法来定义结构体类型的变量。 (2)在大型程序中,通常将所有定义的结构 体类型集中存放在一个或几个头文件中,在程序 文件中用到某一种结构体类型的变量时,只需要 包含相应的头文件即可。 2021/224
2021/2/24 11 注:(1)由于第三种定义方法没有定义类型名, 也就无法再定义这种类型的变量。建议使用前两 种方法来定义结构体类型的变量。 (2)在大型程序中,通常将所有定义的结构 体类型集中存放在一个或几个头文件中,在程序 文件中用到某一种结构体类型的变量时,只需要 包含相应的头文件即可
例2:用三种方法定义结构体类型变量。 S2分配存储空间的结构 name20个字节 id 4个字节 addr40个字节 tel num7个字节 eng 4个字节 pny 4个字节 math 4个字节 ave 4个字节 2021/224
2021/2/24 12 S1、S2分配存储空间的结构 name 20个字节 id 4个字节 addr 40个字节 tel_num 7个字节 eng 4个字节 phy 4个字节 math 4个字节 ave 4个字节 例2:用三种方法定义结构体类型变量。 71
(3)结构体类型变量也有作用域问题,与一般变量 的作用域相同,即在函数定义外定义的结构体类型 变量为文件作用域;在函数体内定义的变量为块作 用域。同样,结构体名也有作用域,与变量作用域 相同。 (4)定义结构体变量时,可指定其存储类型。如: static sI s2 auto sl stru2 extern sl stru3 2021/224 13
2021/2/24 13 (3)结构体类型变量也有作用域问题,与一般变量 的作用域相同,即在函数定义外定义的结构体类型 变量为文件作用域;在函数体内定义的变量为块作 用域。同样,结构体名也有作用域,与变量作用域 相同。 (4)定义结构体变量时,可指定其存储类型。如: static s1 s2; auto s1 stru2; extern s1 stru3;
(5)定义结构体变量时,可进行初始化。方法是用 花括号将每个成员的值括起来。如: sla3={“张三”,“南京”,“445681”,23} 特别强调:初始化时,花括号内的值的类型及 饭序必须与该结构体类型定义的结构体成员一一对 应。如: s1a4={张三”,“南京”,445681,23∥ 误 s1a5={张三”,“南京”,“456819”,23∥ 错误 2021/224 ∥第三个值超过长度84
2021/2/24 14 (5)定义结构体变量时,可进行初始化。方法是用 花括号将每个成员的值括起来。如: s1 a3={“张三”,“南京”,“445681”,23} ; 特别强调:初始化时,花括号内的值的类型及 顺序必须与该结构体类型定义的结构体成员一一对 应。如: s1 a4={“张三”,“南京”,445681,23} //错 误 s1 a5={“张三”,“南京”,“4456819”,23} // 错误 //第三个值超过长度8