标准中,变量声明关键字顺序!char[] a; 这样不是更明了

GKatHere 2017-01-08 08:58:05
如题:标准中,变量声明关键字顺序!char[] a; 这样不是更明了
char a[]; 这种语法是从哪继承来的?

char a[]; //OK
char[] a; //ERR, 但是乎这样更合乎生活习惯
void (__stdcall *b)(int, int); //OK
void (__stdcall* )(int, int) b; //ERR, 但是乎这样更合乎生活习惯
typedef char[] A;
A a; // OK,为何不直接如上
...全文
182 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-01-09
  • 打赏
  • 举报
回复
存在即合理。
paschen 2017-01-08
  • 打赏
  • 举报
回复
C/C++变量类型定义语法错综复杂,有[]、*、()....

如不按标准要求的写,可能对于简单类型看似可以,但对于一些复杂的(如函数指针指向的函数又返回一个函数指针)等一些情况可能就会出现语义含糊的问题

习惯了我觉得第一种没什么不好,如果要增强可读性可以用typedef

以上个人理解
  • 打赏
  • 举报
回复
a[]这样的声明才明了吧,一看就知道是数组,而且知道是几维数组,而你所说的[]a是Java里面的声明方式。 并没有感觉[]a会符合习惯,另外,标准又不是我们制定的,讨论这个问题没什么意义。
真相重于对错 2017-01-08
  • 打赏
  • 举报
回复
续上 作为一个语言编译器来说,一般一个语言中的类型,最后要形成一个表,以备后用 作为c来说 我可以这么写 int a[],b; 但是如果按照你的方式 必须 int[] a; int b; 因此,int[] 和int是两个类型,所以,上边所说的类型表,至少要扩大一倍 你再想想c语言的发展,它是上世界70年代末兴起的,当时的计算机内存应该是以k计,你觉得作为c语言的作者能像现在一样挥霍内存吗?
ForestDB 2017-01-08
  • 打赏
  • 举报
回复
在这个问题上C是祖先(毕竟它最老),它的的想法就是: “某个类型的变量的定义,看上去就跟该类型变量的使用,是一样一样的。” 简化版:“变量的定义方式和变量的使用方法一样”。 然后问题来了,基本上不经过训练,很多人很难理解复杂的变量定义;后续语言的发明人为了缓解这个问题,就把类型独立出来了,然后所有变量的定义方式就统一成了type var; 代表语言就是Java和Go。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧