复合数据类型(结构 共用 枚举) |
| |
| 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是共用体关键字,不能省略 花括号后的分号不能省略。
| |
3.结构体 共用体的作用 提高表示数据的能力 结构提供在相同的数据对象中储存多个不同类型数据项的方法。
共用只能同一时间储存一个单独的数据项。 |
| |
|
|
复合数据类型(结构体 共用体 枚举)
最新推荐文章于 2024-04-27 22:59:39 发布