您的位置:首页 > 其它

复合数据类型(结构体 共用体 枚举)

2017-01-06 21:29 246 查看
复合数据类型(结构 共用 枚举)
 

                
1.如何定义并初始化结构、共用、枚举

(1)C结构既能包含字符串又能包含数字的数据形式,而且还能保持各信息的独立。
结构声明(描述结构的组织布局):
struct book{
char title[MAXTITL];
char author [MAXAUTL];
cloat value;
};该声明描述了一个由两个字符数组和一个float类型变量组成的结构。该声明并未创建实际的数据对象,只描述了该对象由什么组成。(有时,我们把结构声明为模板,因为它勾勒出结构是如何储存数据的。)
Struct为关键字
book是个可选标记
后面程序中可以使用该标记引用该结构:struct book library;library为一个使用book结构布局的结构变量。
{}括起来的是结构成员列表。成员可以是任意一种c的数据类型。
右花括号后面的分号是声明所必需的,表示结构布局定义的结束。
该声明可以放在所有函数外部,声明后的所有函数都能使用该标记,也可以放在函数内部,它的标记只限于函数内部使用。
定义结构变量:
struct book library;
它为
struct book{
char title[MAXTITL];
char author [MAXAUTL];
cloat value;
}library;的简化。
编译器使用book模板为该变量分配空间:一个含MAXTITL个元素的char数组
一个含MAXAUTL个元素的char数组和一个float类型的变量。
也可以定义指向struct book类型结构的指针:
Struct book *ptbook;
初始化结构:
Struct book library={
“the pious pirate and the devious damsel”,
“renee vivotte”,
1.95
};
(2)共用:
在同一个内存空间中储存不同的数据类型(不是同时存储)
典型用法:
设计一种表以储存既无规律、事先也不知道顺序的混合类型。
union hold{
int digit;
double bigf1;
char letter;
};
初始化共用:
共用只能储存一个值,与结构不同。
union hold valA;
valA.letter = ‘R’;
union hold valB = valA;  用另一个共用来初始化
union hold valC = {88};  初始化共用的digit成员
union hold valD = {.bigf1 = 118.2};
指定初始化器。
(3)枚举
可以用枚举类型声明符号名称来表示整型常量。
枚举类型的目的是提高程序的可读性。
enum spectrum{red,orange,yellow,green,blue,violet};
enum spectrum color;
第一个声明创建了spetrum作为标记名,允许把enum spetrum作为一个类型名使用
第二个声明使color作为该类型的变量。枚举变量可以是任意整数类型
 

          
2.使用结构体、共用体的注意事项

struct是结构体关键字,一定不能省略
花括号后的分号不能省略。
注意初始化结构和类别储存期
如果初始化静态存储期的变量(如,静态外部链接、静态内部链接或静态无链接),必须使用常量值。
如果初始化一个静态存储期的结构,初始化列表中的值必须是常量表达式。
如果是自动存储期,初始化列表中的值可以不是常量。
 
共用体的所有成员都在一段内存中存放,起始地址一样,并且同一时刻只能使用其中的一个成员变量。
union是共用体关键字,不能
a263
省略
花括号后的分号不能省略。

 
 3.结构体 共用体的作用

提高表示数据的能力
结构提供在相同的数据对象中储存多个不同类型数据项的方法。
 
共用只能同一时间储存一个单独的数据项。
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: