可能的重复项:
What makes more sense - char* string or char *string? Pointer declarations in C++: placement of the asterisk
我在很多代码中都看到过这种混合版本。(顺便说一句,这适用于C和C++。)人们似乎用两种方式中的一种来声明指针,我不知道哪一种是正确的,这是否重要。
第一种方法是将星号放在类型名称旁边,如下所示:
someType* somePtr;
第二种方法是将星号放在变量名称旁边,如下所示:
someType *somePtr;
这已经让我抓狂一段时间了。有没有什么标准的方法来声明指针?指针是如何声明的还重要吗?我以前用过这两个声明,我知道编译器并不关心它是哪种方式。然而,我看到指针以两种不同的方式声明,这让我相信它背后有一个原因。我很好奇这两种方法中的哪一种更具可读性,或者在某种程度上更符合逻辑,这是我所缺少的。
发布于 2010-04-18 08:41:11
这是一个偏好问题,有点像一场圣战,就像支架风格一样。
风格
someType* somePtr;
正在强调指针变量的类型。它本质上是说,“somePtr
的类型是指向someType
的指针”。
风格
someType *somePtr
强调指向数据的类型。从本质上讲,它是在说“somePtr
指向的数据类型是someType
”。
它们的含义是相同的,但这取决于给定的程序员在创建指针时的心理模型是否“聚焦”,可以说是“聚焦”于指向的数据或指针变量。
把它放在中间(作为someType * somePtr
)是试图避免承诺其中任何一个。
发布于 2010-04-18 08:42:49
无所谓。现在有人会出现并结束这个问题,另一个人会展示如果你在同一个声明中声明了多个变量,那么int* a
方法是如何破坏的,而int *a
更好地反映了代码的语法结构,另一个人将表明int* a
更喜欢Stroustrup方式,并将类型保持在左侧。
有很多观点,但这里没有“正确”的方法。
发布于 2010-04-18 08:41:08
不要紧,这是个人喜好。
有些人喜欢把类型放在一起:
int* p;
其他人说它应该放在变量的旁边,原因如下:
int *p, x;//declare 1 int pointer and 1 int
int *p, *x;//declare 2 int pointers.
随着时间的推移,你会忽略这一点,并接受这两种变体。
https://stackoverflow.com/questions/2660633
复制相似问题