在C ++中,此表单int *p
在语义上与此int* p
不同吗?或者这显然是风格问题?
现在这个问题可能很愚蠢,但我记得我曾经看到同时使用某种两种样式,这让我相信这些表单之间可能存在不同的语义
答案 0 :(得分:6)
他们是一样的。
有时这很棘手,因为
int* a, b;
定义一个指针和一个int。这种风格使它更清晰:
int *a, b;
答案 1 :(得分:4)
它具有相同的语义含义。
如果您使用const
关键字,请注意警告:
int * conts p;
- const指向int与
int const * p;
- 指向const int的非const指针。
答案 2 :(得分:2)
正如其他人所说,他们是一样的。
int* a, b;
声明一个指针和一个整数的事实是疣的一个方面,也以其他方式表现出来。 E.g:
int* a, f(double), c[42];
声明指向int
的{{1}}指针,该函数接受a
并返回double
int
,数组为42 { {1}}名为f
。这是因为所有这些“装饰”(int
,c
,*
)构成了C ++语法的一部分,称为声明符,它与个人相关联name,而不是语句作为一个整体(在语法中称为声明)。