gpt4 book ai didi

c - 不确定为什么在设置结构标签时使用 typedef

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:01 25 4
gpt4 key购买 nike

考虑以下代码:

struct TreeNode {
int key;
struct TreeNode *left;
struct TreeNode *right;
};


struct ListNode {
int key;
struct ListNode *next;
};

我将其理解为具有单独结构标记的两个结构。声明(如果我理解正确的话):

struct ListNode *next; 

正在创建一个指向 ListNode 类型结构的指针。还有那个

struct ListNode node1;

正在创建类型为 ListNode 的结构。但是,我不明白以下两行:

typedef struct TreeNode *TreeNodePtr;
typedef struct ListNode *ListNodePtr;

如果这是创建一个指向类型为 TreeNode/ListNode 的结构节点的指针,我不明白 typedef 在这种情况下的用途。

最佳答案

typedef struct TreeNode *TreeNodePtr;

允许你输入

TreeNodePtr p;

代替

struct TreeNode *p;

注意:人们通常会这样做

typedef struct TreeNode TreeNode;

这允许

TreeNode tn;

这也可以在结构定义本身中完成(一个结构标签,但你的例子没有它)

struct TreeNode {
int key;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;

另请注意 - 在 C++ 中不需要这样做,C++ 中的结构(或类)始终是“它自己的标签”

关于c - 不确定为什么在设置结构标签时使用 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47292538/

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