在C++中,这种形式int *p
在语义上与这个不同int* p
?或者这显然是一种风格问题?C++中不同指针语法之间的语义差异?
现在这个问题可能是愚蠢的,但我记得我曾经见过某个地方两个风格同时使用,这导致我相信这些形式之间可能会有不同的语义。
在C++中,这种形式int *p
在语义上与这个不同int* p
?或者这显然是一种风格问题?C++中不同指针语法之间的语义差异?
现在这个问题可能是愚蠢的,但我记得我曾经见过某个地方两个风格同时使用,这导致我相信这些形式之间可能会有不同的语义。
它们是一样的。
这是棘手有时,由于
int* a, b;
限定一个指针和一个INT。这种风格使其更加清晰:
int *a, b;
它具有相同的语义含义。 如果您正在使用const
关键字意识到了需要注意的地方:
int * conts p;
- 常量指针为int与
int const * p;
- 非const的指针const int的。
正如其他人所说,他们是一样的。
int* a, b;
声明一个指针和一个整数是疣的一个方面,这也体现在其他方面。例如为:
int* a, f(double), c[42];
声明一个指针int
称为a
,采用一个double
并返回一个int
称为f
的函数,并称之为秒的阵列。这是因为所有这些“装饰品”(*
,()
,[]
)形成称为声明者的C++语法的一部分,其与个别名称相关联,而不是整个声明(其被称为声明文法中的)。
int * p''int * p''int * p''int * p' - 所有有效的全部语义相同 –
请注意,bjarne在[他的faq]中回答了这个问题(http://www.stroustrup.com /bs_faq2.html#whitespace)。 –
@JesseGood Oh thanx那个链接!在询问之前我搜索了网页,我不知道我是如何错过的! – NlightNFotis