C++:声明指针

Yok*_*hen 0 c++ visual-studio

所以,在指南中,我读到了这句话

char * terry;
Run Code Online (Sandbox Code Playgroud)

不同于说

char* terry; //or
char *terry; // FYI: I understand what these two do.
Run Code Online (Sandbox Code Playgroud)

正如所述

"我想强调,*我们在声明指针时使用的星号()仅表示它是一个指针(它是其类型复合说明符的一部分),不应该与我们看到的取消引用运算符混淆早一点,但也用星号(*)写.它们只是两个不同的东西,用相同的符号表示."

但是我不明白为什么.也许我以错误的方式接受了引用,现在我再次阅读它,但我仍然感到困惑.任何人都可以告诉我这是错误的还是正确的,为什么?

谢谢.

Car*_*rum 8

不,就解析器而言,这三者完全相同.人们肯定有使用每种风格的理由,但实际上并没有"正确"的方式.作为编辑说明,我更喜欢:

char *terry;
Run Code Online (Sandbox Code Playgroud)

您的链接的作者所描述的是*声明中的内容与*用于取消引用指针的一元运算符有某种不同:

char *terry = "abcdefg"; // declaration & initialization
*terry = 'x';            // dereference
Run Code Online (Sandbox Code Playgroud)

这个潜在的有趣的业务实际上是我更喜欢上面提到的符号的原因之一 - 它使两个案例看起来都一样,所以没有混淆的余地.