可能重复:
声明指针;类型和名称之间空格的左侧或右侧的星号?
我一直想知道放置*
and的确切正确位置是什么&
。似乎 C++ 对放置这些标记的位置非常宽容。例如,我似乎将指针和 & 号放在关键字的左右两侧或两个关键字的中间,但令人困惑的是,有时它们似乎意味着相同的东西,尤其是与const
void f1(structure_type const& parameter)
void f2(structure_type const ¶meter)
void f2(structure_type const *sptr);
void f2(structure_type const* sptr);
void f2(structure_type const * sptr);
这些例子并不详尽。在声明或传递给函数时,我到处都能看到它们。他们甚至是同一个意思吗?但是我也看到 put*
会影响哪个对象被称为指针的情况(可能*
是在两个关键字之间的情况)。
编辑:
int const *Constant
int const * Constant // this above two seem the same to me, both as pointer to a constant value
int const* Constant // EDIT: this one seems the same as above. instead of a constant pointer
const int * Constant // this is also a pointer to a constant value, but the word order changed while the pointer position stays the same, rather confusing.
int* const Constant
int * const Constant // instead, these two are constant pointers
所以我得出了这样的结论:
T const* p; // pointer to const T
const T* p // seems same from above
T* const p; // const pointer to T
尽管如此,这还是把我弄糊涂了。编译器不关心它们所需的位置和间距吗?
编辑:我想大致了解职位的重要性。如果是,在什么情况下。