为什么C语言用int *a 来声明指针变量,而不是int &a声明?
在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C语言从专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!
在评论区回复“888”,关注我之后私信回复“888”,即可拿走。
C 语言发明的时间很早,当时人们对"类型系统" 还很陌生,很多人还习惯将二进制字节作为唯一的数据类型。设计 C 语言的语法时,也不知是谁想出来的,有种设计哲学:让声明的形式与它的使用形式尽可能相似。在这种设计哲学下,是先想如何使用,再来逆推如何声明,这样 C 语言的声明语法显得有点古怪,
比如:
· 声明 int a; 使用时,a 的类型就是 int。
· 声明指针 int *b; 使用时,*b 的类型就是 int。
· 声明数组 int b[10]; 使用时用 b[0];
· 定义函数指针,int (*ptr)(int a, int b); 使用时,就是 (*ptr)(a, b); 可以简写成 ptr(a, b);
C 这种语法设计,在今天看来是不好。使用这种语法,程序员不可以直接从左往右读,有时甚至需要从中间往两边读。只是 C 语言的影响太大,人们常见类 C 的语法,C 语言有些不好的地方也就忍了。C++ 就继承了这种语法,甚至这种语法的设计哲学,反正我总记不住成员函数指针是怎么声明的。