0

我有一个初学者的问题,我在网上冲浪,只找到像这样的定义

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 是 numeric (1 , 2, 3),怎么可以用作类型声明

nodeType *list;

甚至这个?

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

或者也许有一个手册,所以我可以找到?感谢您的善意建议!

4

1 回答 1

1

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

nodeType *list;

相当于:

enum {Integer, String, List, Nil} *list;
于 2013-07-18T06:47:11.340 回答