Java支持两者,为什么不支持C?
我认为int []arr
更容易阅读。
有特殊原因吗?
答案 0 :(得分:5)
原因是C声明的设计是declaration follows usage。
如果你声明一个这样的变量:
int x[5];
x
的用法与其声明非常相似:
int foo = x[0];
这同样适用于指针:
int *y;
y
的用法也类似于其声明:
int foo = *y; /* Dereference the pointer y */
这也适用于更复杂的声明:
int **z[3][4]; /* z as in array of 3 arrays of 4 pointers to pointers to ints */
int foo = **z[0][0]; /* Fetch the first element of z, then fetch the first
element of the resulting array, then dereference that
pointer value, then dereference that pointer value */
还适用于函数声明/指向函数的声明:
int (*f)(); /* f is a pointer to a function returning int */
int foo = (*f)(); /* Dereference the pointer f, then call it as a function. */
答案 1 :(得分:4)
Java从C借用而不是相反。
显然java决定这将是对C语法的改进。
但是,一般来说,定义内容的方式越多,编译器解析代码的难度就越大。由于c
是在1970年代开发的,由于计算能力有限,简单性在其要求列表中会很高。
在1990年代,当他们开发Java时,这不用担心。
答案 2 :(得分:-1)
在c
int a[5]
中表示将整数数组声明为static
。
但是在java
int[] arr
中意味着将整数数组声明为dynamic