我有一个初学者问题,我已经浏览了互联网,只找到了像
这样的定义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);
或者也许有一本手册所以我能找到?谢谢你的好意见!
答案 0 :(得分:1)
使用typedef
定义类型时,可以在任何可以使用类型的地方使用它。它被视为您使用了已定义的类型。所以:
nodeType *list;
相当于:
enum {Integer, String, List, Nil} *list;