在数组声明中,int[] k,i和int k[],i的意思是什么?

3

在声明数组时,我们可以在标识符的任一侧使用方括号,但是有时:

int[] k,i;

and

int k[],i;

这会以两种不同的方式考虑。第一种创建两个数组k和i。第二种创建一个数组k和一个普通变量i。这种行为是什么意思?

编辑:在Java中,我们通常更喜欢第一种声明方式。但在这种情况下,我们无法在单个语句中创建数组和基本变量。


1
请注意,在同一行声明两个变量通常被认为是不良实践。我们倾向于在第一次使用变量时声明它们。 - KLE
你的意思是如果我有五个 int 类型的变量,比如 a、b、c、d、e。那么我应该这样声明: int a; int b; ... - GuruKulki
1
没错。而且你应该给它们更好的名称。 - starblue
2个回答

3

我的猜测如下:

声明int[] k更为合理,因为它声明了k是一个int数组。因此,在Java中这是首选的(?)风格。

另一方面,int k[]是在C语言中声明该数组的方式(K&R对声明语法有不同的哲学观点——他们希望声明与变量的访问相似),为了方便C程序员过渡,这种语法也被允许——没有任何伤害。

现在,在您上面的语句中,您已经链接了两个声明。在第一种情况下,两个变量都声明为相同的类型——显然是int[]。然而,在第二个代码中,这种行为会产生反直觉的结果(并且也不同于C的行为),因此具有其他语义。

请记住,这只是我的猜测。


这确实是首选的风格。http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html说:“然而,惯例不鼓励使用这种形式;方括号标识数组类型,并应与类型指定一起出现。” - BalusC

2
想象一下这样的情景:
(int[]) k, i

int (k[]), (i)

在第一个示例中,括号与 int 关键字相关联,指定您要创建 int 数组。在第二个示例中,您指定 int 类型,然后声明了一个名为 k 的 int 数组和一个 int 类型的 i。请注意保留 HTML 标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接