gpt4 book ai didi

c - typedef 与 C 中没有 typedef 的结构和枚举

转载 作者:太空狗 更新时间:2023-10-29 15:29:40 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com