【问题标题】:Why node *left,*right and not node* left,right? [duplicate]为什么节点 *left,*right 而不是节点* left,right? [复制]
【发布时间】:2017-11-24 17:39:23
【问题描述】:

left 和 right 的类型是 node* 所以和其他类型一样它们应该被声明为 node* left,right;示例 int a,b;

【问题讨论】:

  • 这样你就可以写int a, *b = &a
  • 这是如何获得 +3 的??
  • @rootTraveller,你能支持那个断言吗?
  • @rootTraveller 那是 100% 错误的。 node* left, right;node* left; node right; 相同
  • @rootTraveller 这个链接是否足够好:ideone.com/sI2j2v ?

标签: c++ c pointers syntax


【解决方案1】:

你必须选择一种或另一种方式,这种方式不那么糟糕。有关另一种方式有多糟糕的示例,请比较:

int a[10], b[20], c[30];

int[10] a;
int[20] b;
int[30] c;

【讨论】:

  • 许多人会质疑这种方式不那么糟糕的说法。
  • 没错,但关键是它是在两种方案之间进行选择,每种方案各有优缺点。
  • int[10] a; 什么?
  • @NathanOliver 如果规则是 OP 建议的规则,这就是您声明数组的方式。就像int* a, b; 而不是int *a, *b; 你会有int[10] a, b; 而不是int a[10], b[10];。除非你提出更离奇的建议。
  • @DavidSchwartz 哦。我没明白你是在展示如果它附加到类型上会是什么样子。
【解决方案2】:

在使用 C 编程时,如果您养成将 * 附加到变量名的习惯,这对您来说会更有意义。

int *i,j;

i 是 int*,j 是 int。

【讨论】:

  • 这个逻辑与decltype(i) k 不同。
  • @MaximEgorushkin 我没有意识到这个问题也被标记为 c++
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2019-08-18
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多