作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 C 语言中,将结构声明为
typedef struct {...} Foo;
和
struct Foo {...};
我知道第二个要求您使用 struct
作为前缀,但是在编写或执行程序时我会注意到这两个定义之间的区别是什么? enum
怎么样?
最佳答案
更新:请参阅答案所附的评论以进行澄清。
原帖。
此外having to write "struct" everywhere , 其他值得注意的是,使用 typedef 将允许您 avoid subtle syntax errors when working with pointers :
引用:
Typedef 还可以简化指针类型的声明。考虑这个:
struct Node {
int data;
struct Node *nextptr;
};
使用typedef,上面的代码可以改写成这样:
typedef struct Node Node;
struct Node {
int data;
Node *nextptr;
};
在 C 中,可以在一个文件中声明多个相同类型的变量声明,甚至混合指针和非指针。然而,有人会需要在每个变量前加一个星号以将其指定为指针。在下文中,程序员可能会假设 errptr 是确实是一个 Node *,但是一个打印错误意味着 errptr 是一个节点。这可能会导致细微的语法错误。
struct Node *startptr, *endptr, *curptr, *prevptr, errptr, *refptr;
通过定义一个Node * typedef,可以保证所有的变量将是指针类型。
typedef struct Node *NodePtr;
...
NodePtr startptr, endptr, curptr, prevptr, errptr, refptr;
关于c - typedef 与 C 中没有 typedef 的结构和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302190/
我是一名优秀的程序员,十分优秀!