黑马程序员技术交流社区

标题: C语言枚举与typedef之间的关系 [打印本页]

作者: meijinyu    时间: 2014-11-25 20:16
标题: C语言枚举与typedef之间的关系
请问一下语句怎么区分的?
1、定义枚举类型并定义变量
enum season
{
     spring ,summer, autum, winter

} s;

2,用typedef给枚举类型取别名
typedef enum season
{
     spring ,summer, autum, winter

} s;

我想问一下为什么定义的两个s,不一样。为什么一个是定义了叫season枚举类型的变量,一个给season的枚举类型去了一个别名?请大神帮个忙,谢谢!
作者: Jr_711    时间: 2014-11-25 20:34
本帖最后由 Jr_711 于 2014-11-25 20:35 编辑

1、定义枚举类型并定义变量
enum season{
     spring ,summer, autum, winter
} s;


相当于:把定义枚举数据类型和枚举变量结合在一起
1>先定义个枚举
enum season
{
     spring ,summer, autum, winter
};
2>再用枚举定义一个变量
enum season  s;      //类似的enum season a;


2,用typedef给枚举类型取别名
typedef enum season
{
     spring ,summer, autum, winter
} s;
相当于:把定义枚举数据类型和typedef结合在一起
1>先定义个枚举
enum season
{
     spring ,summer, autum, winter
};
2>再用typedef重新定义成s
typedef enum season s;
s a;    // 等同于 enum season a;




作者: meijinyu    时间: 2014-11-25 23:37
Jr_711 发表于 2014-11-25 20:34
1、定义枚举类型并定义变量
enum season{
     spring ,summer, autum, winter

你好,首先非常感谢你。请问我怎么知道定义是时候这个s是定义的变量还是定一个的别名呢?
作者: 彈指っ紅顏老    时间: 2014-11-26 02:33
meijinyu 发表于 2014-11-25 23:37
你好,首先非常感谢你。请问我怎么知道定义是时候这个s是定义的变量还是定一个的别名呢? ...

取别名需要类型定义typedef啊,没有typedef当然就不是取别名了……你该不会是还没有看到讲typedef的视频吧?
作者: meijinyu    时间: 2014-11-26 18:12
彈指っ紅顏老 发表于 2014-11-26 02:33
取别名需要类型定义typedef啊,没有typedef当然就不是取别名了……你该不会是还没有看到讲typedef的视频 ...

不是,不是说定义类型的同时可以定义变量吗?我的意思是为什么定义typedef的同时,变量名就变成了别名,而是是变量
作者: 邵起    时间: 2014-11-26 18:39
meijinyu 发表于 2014-11-26 18:12
不是,不是说定义类型的同时可以定义变量吗?我的意思是为什么定义typedef的同时,变量名就变成了别名, ...

亲,这就是传说中的语法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2