[英]One-dimensional array references to multi-dimensional array
为什么这段代码会编译?
int[] array = new int[][]{{1}}[0];
左侧是一维数组。 在右边我认为那是三维的,但事实并非如此?
右侧是一维数组,它是二维数组的第一个( 第 0 个 )元素
new int[][]{{1}}
为了更清楚地显示它,我们可以添加括号
int[] array = (new int[][]{{1}}) [0];// [0] is returning first row of 2D array
// which is 1D array so it can be assigned to `array`
右侧表达式有两个作用。
// instantiate new 2D array
// ┌──────┸───────┑ ┌ access zeroth element of new 2D array
// │ │ │
int[] array = new int[][]{{1}} [0];
这基本上等同于以下内容:
int[][] array2D = new int[1][1];
array2D[0][0] = 1;
int[] array = array2D[0];
从存储器管理的角度来看,二维数组与一维数组相同(意味着数据存储在单个维度中)。 因此,二维数组的第一个元素与一维数组的第一个元素相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.