Possible Duplicates:
What makes more sense - char* string or char *string? Pointer declarations in C++: placement of the asterisk
我在很多代码中都看到过这种混合版本。 (顺便说一句,这适用于 C 和 C++。)人们似乎以两种方式中的一种来声明指针,我不知道哪一种是正确的,甚至不知道它是否重要。
将星号放在类型名称旁边的第一种方式,如下所示:
someType* somePtr;
第二种方法是将星号放在变量名旁边,如下所示:
someType *somePtr;
这已经让我发疯了一段时间了。有没有声明指针的标准方法?指针的声明方式是否重要?我以前使用过这两种声明,而且我知道编译器并不关心它是哪种方式。然而,我看到指针以两种不同的方式声明的事实让我相信这背后是有原因的。我很好奇这两种方法是否在我所缺少的某种方式上更具可读性或逻辑性。
最佳答案
这是一个偏好问题,有点像圣战,就像括号样式一样。
“C++”风格
someType* somePtr;
是强调指针变量的类型。它本质上是说“somePtr
的类型是指向someType
的指针”。
“C”风格
someType *somePtr;
强调指向数据的类型。它本质上是说“somePtr
指向的数据类型是someType
”。
它们的含义相同,但这取决于给定程序员在创建指针时的心理模型是“专注”的,可以说是指向数据还是指针变量。
把它放在中间(如someType * somePtr
)试图避免提交到任何一个。
关于c++ - 声明指针;类型和名称之间空格的左侧或右侧的星号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660633/