使用typedef枚举作为新类型

时间:2013-07-18 06:34:11

标签: typedef

我有一个初学者问题,我已经浏览了互联网,只找到了像

这样的定义
typedef enum
{
    A,B,C,D
}CAP;
CAP a=A; // printf("%d",a); => 1

但我的问题是(来自斯坦福CS107部分讲义):

typedef enum { 
 Integer, String, List, Nil 
} nodeType; 
// skip
char *ConcatAll(nodeType *list) 
{ 
 switch (*list) { 
 case Integer: 
 case Nil: return strdup(""); 
 case String: return strdup((char *)(list + 1)); 
 } 
 nodeType **lists = (nodeType **)(list + 1); 
 // skip after
} 

由于nodeType是数字(1,2,3),为什么它可以用作类型声明

nodeType *list;

甚至是这个?

nodeType **lists = (nodeType **)(list + 1); 

或者也许有一本手册所以我能找到?谢谢你的好意见!

1 个答案:

答案 0 :(得分:1)

使用typedef定义类型时,可以在任何可以使用类型的地方使用它。它被视为您使用了已定义的类型。所以:

nodeType *list;

相当于:

enum {Integer, String, List, Nil} *list;
相关问题