关于typedef struct 的有关问题
关于typedef struct 的问题
这个代码里面的BiTNode 可以理解为是 struct Node的别称,可以直接用BiTNode x;来定义该结构体的变量。
问题(1)那么*BiTree是什么意思?
问题(2) BiTree p 是不是就相当于定义了一个指向struct Node或者说BiTNode 的指针p ?、
问题(3)如果是, 那么为什么不用BiTNode * p 来定义指向结构体struct Node的指针呢???
------解决方案--------------------
1*BiTree 相当于 typedef Node *BiTree.定义了一个Node* 的别名。
2 是的。
3 为什么?为了好理解,你完全可以用BiTNode * p这样子做。但是这样无法清楚表示p的意义,p不仅仅是一个节点,还是一棵树的根节点。用BiTree就能清晰地说明这一点。
------解决方案--------------------
建议星号靠前
很容易识别 BiTree是Node*的别名
而非*BiTree 是Node的别名
typedef struct Node
{
int value;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
这个代码里面的BiTNode 可以理解为是 struct Node的别称,可以直接用BiTNode x;来定义该结构体的变量。
问题(1)那么*BiTree是什么意思?
问题(2) BiTree p 是不是就相当于定义了一个指向struct Node或者说BiTNode 的指针p ?、
问题(3)如果是, 那么为什么不用BiTNode * p 来定义指向结构体struct Node的指针呢???
------解决方案--------------------
1*BiTree 相当于 typedef Node *BiTree.定义了一个Node* 的别名。
2 是的。
3 为什么?为了好理解,你完全可以用BiTNode * p这样子做。但是这样无法清楚表示p的意义,p不仅仅是一个节点,还是一棵树的根节点。用BiTree就能清晰地说明这一点。
------解决方案--------------------
建议星号靠前
很容易识别 BiTree是Node*的别名
而非*BiTree 是Node的别名