构造数据类型struct,共用体union,枚举类型enum,宏#define的区别

首先我们必须清楚这几种类型的明确定义:

结构体struct用户自定义的新数据类型,在结构体中可以包含若干个不同数据类型和不同意义的数据项(当然也可以相同),从而使这些数据项组合起来反映某一个信息。这里可以和数组对比一下(数组是相同类型元素的集合);

 

共用体union用法与struct的用法十分相似,不同数据类型的数据使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。

 

枚举类型enum枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。我们先举一个例子:


#define A   1
#define B   2
#define C   3
#define D   4
#define E   5
#define F   6
#define G   7      


我们一次宏定义了 7个大写字母,而且我们发现他们是从1开始一次递增,我再看枚举类型


enum character
{
    A =
1,B,C,D,E,F,G
};


枚举类型的第一个枚举成员默认值是0,随后的枚举成员默认(不赋值)比前一个成员增1


因此我们显而易见的看出,两者的区别:


1)首先,枚举类型在表示多个替换时要比宏更具优势,枚举可以一次定义大量相关的常量,而宏只能定义一个;

2)   一般调试器可以调试枚举常量,但是不能调试宏常量。

3)  #define宏常量在预处理阶段进行简单的替换,而枚举是在编译的时候确定其值;


如果想要了解跟多的相关enumdefine的区别:参考http://blog.csdn.net/wang_zheng_kai/article/details/18605889

 

是否感觉enumdefine的功能其实差不多?

引用两个问题(c语言深度解剖)

枚举可以做到的事,define都可以做到吗?

 

枚举可以自增1,这样不用每一个值都定义,而宏必须每个值都定义。而且枚举是一个集合,代表一类值,方便使用,而宏不能形成集合。所以我感觉,引用枚举类型最大的好处就是增加了程序的可读性。

 

同样,再举一个enum的例子:

 

enum

{

    saturday,

    sunday = 0,

    monday,

    tuesday,

    wednesday,

    thursday,

    friday

} workday;

typedef enum workday

{

    saturday,

    sunday = 0,

    monday,

    tuesday,

    wednesday,

    thursday,

    friday

} workday;

感觉怎么样?是不是和struct很相似

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值