为什么C变量声明语法不一致?

当我声明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来清理一些东西.

上一篇:为什么在泛型类(Java)的构造函数中提供类型参数是错误的?


下一篇:Kettle报错OPTION SQL_SELECT_LIMIT=DEFAULT