Java创建二维数组与C语言中不同的一点
Java创建二维数组的方式中有这么一种:
int[][] a = new int[3][];
这种方式省略了列数,但是没有省略行数,这一点与C语言中“可以省略行数,不能省略列数”完全相反,这是需要注意的。
为什么C语言不能省略列数,这是因为:
这主要是因为C语言关于二维数组的定义。C语言中二维数组的每个元素都是相同大小的一维数组。所以只要确定了列数,再根据定义的时候用到的行数,就可以给出占用的内存。但如果在定义的时候没有说明列数,就会导致内存出错。
而Java语言不能省略行数是因为:
Java二维数组的数组名存放在栈里,而堆里存放具体的数据。我们在定义的时候先在栈里申请行数,然后具体需要用到哪一个一维数组的时候再申请堆的内存。所以可以省略列数,不能省略行数。
所以在Java里,int[][] a = new int[][2]
是错误的方式。
感谢博客:java和C语言定义二维数组的区别