c++ - 声明指针;类型和名称之间空格的左侧或右侧的星号?

标签 c++ c pointers

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/

相关文章:

指向对象的 C++ 指针

C++ OpenGL --- 函数 gluBuild2DMipmaps 的链接器错误

C++双缓冲区和内存

java - 使用 get String 在 Json 对象中使用 if 语句不起作用

c - C中奇怪的内存错误

c - c 中的 fscanf 使用 - 值未正确保存

c++ - 有没有办法在C++中动态清除文本文件的内容?

c++ - 我怎么知道 Cereal 的二进制输出的大小?

c - C语言中查找文件中的最低和最高温度

c - 以“可能”在尽可能多的系统上工作的方式读取低指针位