为什么C数组声明为int arr []而不是int [] arr?

时间:2018-01-18 14:59:48

标签: c arrays

Java支持两者,为什么不支持C?

我认为int []arr更容易阅读。

有特殊原因吗?

3 个答案:

答案 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