当我声明C变量时,我这样做:
int a,b,c,d;
要么
string strA,strB,strC,strD;
即,首先是类型,然后是逗号分隔的变量名列表.
但是,我声明了这样的指针:
int *a,*b,*c,*d;
和这样的引用:
int &a,&b,&c,&d;
应该是一致的
int* a,b,c,d;
和
int& a,b,c,d;
为什么不一致?
解决方法:
这是因为C遗产. *修饰符适用于C中的变量.所以C设计师制作了&通过类比来应用变量,因为它们不能在不破坏C兼容性的情况下改变第一个变量.数组语法也是如此:
int anInt, *aPointerToInt, anArrayOfInt[100];
在C的设计和演变中Bjarne Stroustrup表示他对此并不满意,但不得不接受它以实现C兼容性.他特别不满意这件事:
int *a[10];
从声明中可以看出,如果a是指向数组或指针数组的指针(它是指针数组,则需要使用括号来覆盖).
当然,你总是可以使用typedef来清理一些东西.