在定义结构变量时,也可以指定存储类型。但不 能定义 register型结构变量,因为结构变量通常都占 用较多的存储空间,在寄存器中存放不下。 例如 连续的、相同 类型的成员项 main 可以这样书写 struct a i int b,c; 错误 }; register) struct a d 16
16 main ( ) { struct a { int b , c ; } ; register struct a d ; …… } 在定义结构变量时,也可以指定存储类型。但不 能定义register 型结构变量,因为结构变量通常都占 用较多的存储空间,在寄存器中存放不下。 例如: 连续的、相同 类型的成员项 可以这样书写 错误
错误!因 struct 在函数外部定义的结构变对a结构类型是 定义也必须在函数的外部被定义 在main函数内 FIL.B 定义的。 这个是正确的 因 struct a结构 struct a d 类型是在mn函} 数外定义的。 main o maN struct a i int b. c struct a e
17 struct a { int b , c ; } d ; main ( ) { struct a e ; …… } 在函数外部定义的结构变量对应的结构类型的 定义也必须在函数的外部被定义。 struct a d ; main ( ) { struct a { int b , c ; } ; …… } 例如: 错误! 因struct a 结构类型是 在main函数内 定义的。 这个是正确的 因struct a 结构 类型是在main函 数外定义的
结构变量也有局部与全局、临时与永久的特性。 总之,结构变量与用C固有的数据类型关键字定义 的变量具有相同的性质。 例如 外部全局 struct a 结构变量 intb,c;静态局部 结构变量 main static struct a e; 18
18 结构变量也有局部与全局、临时与永久的特性。 总之,结构变量与用C固有的数据类型关键字定义 的变量具有相同的性质。 例如: struct a { int b , c ; } d ; main ( ) { static struct a e ; …… } 外部全局 结构变量 静态局部 结构变量
113结构变量的初始化 与普通变量相同,C语言也允许在声明结构变量 的同时对结构变量初始化。对结构变量的初始化实 际上是对结构变量每个成员的初始化。 带有初始化值的结构变量的定义形式为: struct结构类型名结构变量名1={初始化值表1}, 结构变量名2={初始化值表2}, 结构变量名n={初始化值表n};
19 11.3 结构变量的初始化 与普通变量相同,C语言也允许在声明结构变量 的同时对结构变量初始化。对结构变量的初始化实 际上是对结构变量每个成员的初始化。 带有初始化值的结构变量的定义形式为: struct 结构类型名 结构变量名1 = {初始化值表1 } , 结构变量名2 = {初始化值表2 } , ……… 结构变量名n = {初始化值表n } ;
或者: struct结构类型名{ 数据类型名1成员名1; 数据类型名2成员名2; 数据类型名n成员名n; }结构变量名1={初始化值表1}, 结构变量名2={初始化值表2}, 结构变量名n={初始化值表n}; 20
20 struct 结构类型名{ 数据类型名1 成员名1 ; 数据类型名2 成员名2 ; ……… 数据类型名n 成员名n ; }结构变量名1 = { 初始化值表1 } , 结构变量名2 = { 初始化值表2 } , ……… 结构变量名n = { 初始化值表n } ; 或者: