在博客和论坛周围,我注意到人们使用不同的方式在c ++中声明指针:
int* a = nullptr;
和
int *a = nullptr;
两种方法之间有区别吗?如果是,那是什么?
答案 0 :(得分:5)
在大多数情况下,C ++中的空白都被忽略,这是其中之一。您可以像int*a=nullptr;
,int *a=nullptr;
,int* a=nullptr;
,int * a=nullptr;
这样写,或者其他适合您的东西,对于编译器来说都是相同的意思。在人们的偏爱中,大多数归因于通常在自己的代码库中可读性最强的样式指南或其他形式的理由。
也正如其他人指出的那样,这可能与对如何在声明中确定类型的误解有关,这在许多情况下确实会造成混淆。我建议您研究如何阅读这些内容(即使不是100%准确的情况,诸如螺旋规则之类的东西也是一个很好的起点),因为这将有助于减轻很多困惑。
答案 1 :(得分:2)
没有区别。并且*
始终仅适用于a
。
示例:
int *a= nullptr, b=12; // a is a pointer, b is a plain int
int* a= nullptr, b=12; // still a is a pointer and b an int,
// despite misleading impression conveyed