*或&的位置是否重要?

and*_*rew 2 c++ pointers

可能重复:
在C中,为什么变量名前面的星号,而不是类型后?
什么是您首选的指针声明样式,为什么?

在C++中,我看到指针以不同的方式放置.例如,

char* ptr
char * ptr
char *ptr
Run Code Online (Sandbox Code Playgroud)

以上3个例子是否相同?(与&相同)

Xeo*_*Xeo 5

无所谓.(例如,它们是相同的.)你甚至可以在char*ptr;没有任何空白的情况下写作.
请注意,在一行中有多个声明:char* ptr, noptr;.在这里,第三种语法更加清晰:char *ptr, noptr;.
我的规则是避免这种混淆:每行只有一个变量.另一种方法是在没有错过的情况下做到正确*:typedef指针,例如:

typedef char* CharPtr;
CharPtr ptr1, ptr2; // now both are pointer
Run Code Online (Sandbox Code Playgroud)

虽然那时你需要注意其他事情,比如constness,所以我坚持上面提到的规则:

typedef char* CharPtr;
const CharPtr p1; // const char* ?? or char* const ??
CharPtr const p2; // char* const ?? or const char* ??
// Eg.: Can't the pointer or the pointee be changed?
Run Code Online (Sandbox Code Playgroud)

(以上所有内容也适用于参考文献&.)