首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >声明指针;在类型和名称之间的空格左边还是右边加星号?

声明指针;在类型和名称之间的空格左边还是右边加星号?
EN

Stack Overflow用户
提问于 2010-04-18 08:37:38
回答 6查看 80.1K关注 0票数 145

可能的重复项:

What makes more sense - char* string or char *string? Pointer declarations in C++: placement of the asterisk

我在很多代码中都看到过这种混合版本。(顺便说一句,这适用于C和C++。)人们似乎用两种方式中的一种来声明指针,我不知道哪一种是正确的,这是否重要。

第一种方法是将星号放在类型名称旁边,如下所示:

代码语言:javascript
复制
someType* somePtr;

第二种方法是将星号放在变量名称旁边,如下所示:

代码语言:javascript
复制
someType *somePtr;

这已经让我抓狂一段时间了。有没有什么标准的方法来声明指针?指针是如何声明的还重要吗?我以前用过这两个声明,我知道编译器并不关心它是哪种方式。然而,我看到指针以两种不同的方式声明,这让我相信它背后有一个原因。我很好奇这两种方法中的哪一种更具可读性,或者在某种程度上更符合逻辑,这是我所缺少的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-18 08:41:11

这是一个偏好问题,有点像一场圣战,就像支架风格一样。

风格

代码语言:javascript
复制
someType* somePtr;

正在强调指针变量的类型。它本质上是说,“somePtr的类型是指向someType的指针”。

风格

代码语言:javascript
复制
someType *somePtr

强调指向数据的类型。从本质上讲,它是在说“somePtr指向的数据类型是someType”。

它们的含义是相同的,但这取决于给定的程序员在创建指针时的心理模型是否“聚焦”,可以说是“聚焦”于指向的数据或指针变量。

把它放在中间(作为someType * somePtr)是试图避免承诺其中任何一个。

票数 130
EN

Stack Overflow用户

发布于 2010-04-18 08:42:49

无所谓。现在有人会出现并结束这个问题,另一个人会展示如果你在同一个声明中声明了多个变量,那么int* a方法是如何破坏的,而int *a更好地反映了代码的语法结构,另一个人将表明int* a更喜欢Stroustrup方式,并将类型保持在左侧。

有很多观点,但这里没有“正确”的方法。

票数 129
EN

Stack Overflow用户

发布于 2010-04-18 08:41:08

不要紧,这是个人喜好。

有些人喜欢把类型放在一起:

代码语言:javascript
复制
int* p;

其他人说它应该放在变量的旁边,原因如下:

代码语言:javascript
复制
int *p, x;//declare 1 int pointer and 1 int
int *p, *x;//declare 2 int pointers.

随着时间的推移,你会忽略这一点,并接受这两种变体。

票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2660633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档