猿问

为什么星号在变量名之前而不是类型后面?

为什么星号在变量名之前而不是类型后面?

为什么大多数C程序员都这样命名变量:

int *myVariable;

而不是这样:

int* myVariable;

两者都是有效的。在我看来,星号是类型的一部分,而不是变量名称的一部分。有人能解释这个逻辑吗?


Qyouu
浏览 688回答 3
3回答

qq_遁去的一_1

它们是完全等同的。然而,在int *myVariable, myVariable2;很明显,MyVariable有类型INT*,而myVariable 2的类型为INT..在……里面int* myVariable, myVariable2;很明显,两者都是类型的。INT*,但这是不正确的,因为myVariable2有型INT.因此,第一种编程风格更直观。

翻过高山走不出你

如果你换个角度看,*myVariable是类型的int,这是有道理的。

缥缈止盈

因为该行中的*比类型更紧密地绑定到变量:int* varA, varB; // This is misleading正如@Lundin在下面指出的那样,Const增加了更多的微妙之处。您可以完全避开这一点,方法是每一行声明一个变量,这绝不是模棱两可的:int* varA; int varB;清晰的代码和简洁的代码之间的平衡是很难达到的-十几行冗余的代码int a;也不好。尽管如此,我还是默认为每行一个声明,并担心以后会合并代码。
随时随地看视频慕课网APP
我要回答