在数组声明int k,i和int k ,i;

在声明数组时,我们可以在标识符的任何一侧使用括号,但在这种情况下:

int[] k,i; 

 int k[],i; 

它将以两种不同的方式考虑。 那是第一个创建两个数组k和i。 第二个创建一个数组k和一个正常变量i。 这是什么行为?

编辑:在java中我们通常更喜欢第一种类型的声明。 但在这种情况下,我们无法在单个语句中创建数组和原始变量。

我的猜测如下:

声明int[] k更符合逻辑,因为它声明kint数组 。 因此,它是Java中的首选(?)样式。

另一方面, int k[]是声明这个数组的C方式(当涉及声明语法时,K&R有一个不同的哲学 – 他们希望声明模仿对变量的访问 )并简化C程序员的转换,这种语法也被允许 – 没有伤害。

现在,在您的上述陈述中,您已经链接了两个声明。 在第一种情况下,两个变量都以相同的类型声明 – 显然是int[] 。 但是,在第二个代码中,这种行为会违反直觉(并且也与C的行为不同),因此具有其他语义。

请记住,这纯粹是猜测。

想想这样:

 (int[]) k, i 

int (k[]), (i)

在第一个示例中,括号与int关键字相关联,指定您要创建int数组。 在第二个中,指定int类型,然后声明一个int数组和一个int i。