cju*_*b39 4 c enums struct typedef
在C中,将结构声明为是否存在任何有效差异
typedef struct {...} Foo;
Run Code Online (Sandbox Code Playgroud)
和
struct Foo {...};
Run Code Online (Sandbox Code Playgroud)
我知道第二个要求你使用前缀struct,但是在编写或执行程序时我会注意到这两个定义之间有什么区别?用enums怎么样?
更新:请参阅答案中的评论以获得澄清.
原帖.
除了必须在任何地方编写"struct"之外,另外需要注意的是使用typedef 可以避免在使用指针时出现细微的语法错误:
引用:
Typedef还可以简化指针类型的声明.考虑一下:
struct Node {
int data;
struct Node *nextptr;
};
Run Code Online (Sandbox Code Playgroud)
使用typedef,可以像下面这样重写上面的代码:
typedef struct Node Node;
struct Node {
int data;
Node *nextptr;
};
Run Code Online (Sandbox Code Playgroud)
在C中,可以在单个语句中声明多个相同类型的变量,甚至可以混合指针和非指针.但是,需要在星号前加上每个变量的前缀,以将其指定为指针.在下文中,程序员可能会认为errptr确实是Node*,但是打字错误意味着errptr是一个Node.这可能会导致细微的语法错误.
struct Node *startptr, *endptr, *curptr, *prevptr, errptr, *refptr;
Run Code Online (Sandbox Code Playgroud)
通过定义Node*typedef,可以确保所有变量都是指针类型.
typedef struct Node *NodePtr;
...
NodePtr startptr, endptr, curptr, prevptr, errptr, refptr;
Run Code Online (Sandbox Code Playgroud)