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/25586761/

相关文章:

android - 使用蓝牙组件将数据从 Android 手机传输到串行设备时出现问题

c++ - QML 中的两种方式绑定(bind) C++ 模型

javascript - asm.js Module.ccall/Module.cwrap 回调

c - 当我使用 free() 时,C 中的程序随机崩溃

c++ - 在 while 循环中递增 *char 的指针

c++ - 指针类型转换没有给出预期的结果

c - 双重自由/腐败?

C语言-使用fgets的奇怪输出

字符未保存到数组

C++ 未定义对代码中实现和模板化的函数的引用