<分区>
我想了解两者的用途??我现在的理解是 Node *root
是对指向节点对象的根指针的引用,另一方面 Node* root
是指向节点本身的指针(允许您通过通过引用)
标签 c
<分区>
我想了解两者的用途??我现在的理解是 Node *root
是对指向节点对象的根指针的引用,另一方面 Node* root
是指向节点本身的指针(允许您通过通过引用)
最佳答案
此定义中的间距并不重要,您可以互换编写以下所有内容,它们都将 root
定义为指向 Node
的指针:
Node*root;
Node *root;
Node* root;
Node * root;
Node *root; // I have seen that!
Node
*
root
;
Node(((*(root)))); // yes, this is allowed too!
\
N\
od\
e*r\
oot ; // ASCII art style: a corner case ;-)
这是您喜欢使用的风格问题。请记住这些注意事项:
可读性非常重要,可以避免愚蠢和微妙的错误,并使代码更易于维护,无论是您自己还是他人。
一致性是使代码可读的关键:选择一种样式并在任何地方使用它。
Node * root
看起来像乘法,容易造成混淆。
如果您在同一语句中声明多个变量,则将 *
添加到类型的末尾会造成混淆:
Node* root, tree; // defines a pointer root and a structure tree.
鉴于
Node *root, *tree; // defines 2 Node pointers root and tree.
这就是许多程序员更喜欢将 *
添加到声明中的标识符的原因。
使用 typedef
来隐藏指针性质,如 typedef Node *Nodeptr;
或更糟的 typedef Node *List;
往往容易出错,并在程序员和读者的头脑中造成更多的困惑。
关于c - Node* root 和 Node *root 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085118/