【发布时间】:2012-06-14 12:11:43
【问题描述】:
为什么 C++ 被设计成在同一行声明两个 int *s 的正确方法是
int *x, *y;
不是
int* x,y;
我知道有些人认为您应该避免使用任何一种形式并在自己的行中声明每个变量,但我对为什么做出这种语言决定很感兴趣。
【问题讨论】:
-
因为这是在 C 中完成的方式。
-
可能他们认为更灵活,用户可以同时声明指针和普通变量。
-
我想说最奇怪的部分是初始化。假设我们有
int* p = new int[5];然后int* a = &p;就可以了:“给指针a p 的地址”。但是int *b = &p;很奇怪:“给整数 *b p 的地址”。考虑到 *b 是一个 int,为什么要给出地址?这就是为什么我发现指针的链式声明毫无意义。
标签: c++ pointers language-design declaration