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

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

 

                

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

1C结构既能包含字符串又能包含数字的数据形式,而且还能保持各信息的独立。

结构声明(描述结构的组织布局):

struct book{

char title[MAXTITL];

char author [MAXAUTL];

cloat value;

};该声明描述了一个由两个字符数组和一个float类型变量组成的结构。该声明并未创建实际的数据对象,只描述了该对象由什么组成。(有时,我们把结构声明为模板,因为它勾勒出结构是如何储存数据的。)

Struct为关键字 book是个可选标记

后面程序中可以使用该标记引用该结构:struct book librarylibrary为一个使用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.结构体 共用体的作用

提高表示数据的能力

结构提供在相同的数据对象中储存多个不同类型数据项的方法。

 

共用只能同一时间储存一个单独的数据项。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值