2012-11-27 34 views
3

在C++中,这种形式int *p在语义上与这个不同int* p?或者这显然是一种风格问题?C++中不同指针语法之间的语义差异?

现在这个问题可能是愚蠢的,但我记得我曾经见过某个地方两个风格同时使用,这导致我相信这些形式之间可能会有不同的语义。

+0

int * p''int * p''int * p''int * p' - 所有有效的全部语义相同 –

+1

请注意,bjarne在[他的faq]中回答了这个问题(http://www.stroustrup.com /bs_faq2.html#whitespace)。 –

+0

@JesseGood Oh thanx那个链接!在询问之前我搜索了网页,我不知道我是如何错过的! – NlightNFotis

回答

6

它们是一样的。

这是棘手有时,由于

int* a, b; 

限定一个指针和一个INT。这种风格使其更加清晰:

int *a, b; 
4

它具有相同的语义含义。 如果您正在使用const关键字意识到了需要注意的地方:

int * conts p; - 常量指针为int与

int const * p; - 非const的指针const int的。

2

正如其他人所说,他们是一样的。

int* a, b;声明一个指针和一个整数是疣的一个方面,这也体现在其他方面。例如为:

int* a, f(double), c[42]; 

声明一个指针int称为a,采用一个double并返回一个int称为f的函数,并称之为秒的阵列。这是因为所有这些“装饰品”(*,(),[])形成称为声明者的C++语法的一部分,其与个别名称相关联,而不是整个声明(其被称为声明文法中的)。