Author:云都小生
多维数组
创建一个一维数组:int[] a = new int[10];
创建一个二维数组:int[,] a = new int[2,3]; //两行三列的数组
我们知道一维数组在内存中是占据一个线性的空间。而且数组有一个特点,也可以说是缺点,那就是数组一旦分配之后,长度就是确定的。
对于二维数组来说亦同,二维数组在内存中占据的,其实也是一个线性的空间。因为二维数组跟一维数组一样,长度一开就是固定的。
其实这样说也不严谨,数组被声明的时候,数组名就是“栈”里的一个小变量,指向null。一旦我们确定数组大小的时候,内存就会分配一小块线性的空间,然后指针指向该地址。
一位数组和二维数组在内存中是这样分布的。
交错数组
不管是几维的数组,它们在一个维度上的长度都是相同的。
例如二维数组,int[] a = new int[2,3]
这就是两行三列,a[0]、a[1]、a[2]它们的长度都是相同的,但是交错数组并不是这样。
交错数组看起来更像是“齿轮数组”,也有人说是数组的数组,看图···
看起来像不像齿轮?
交错数组的创建方式:
int[][] a = new int[4][]; //1
a[0] = new int[6]; //2
a[1] = new int[2];
a[2] = new int[3];
a[3] = new int[5];
执行完第一句的时候,a这个数组就会有四个指针,都指向null。一旦我们执行第二部,a[0]这个指针就会指向一块分配好的内存空间(长度是6*sizeof(int))。
交错数组还可以这样创建:
int[][] jaggedArray = new int[][]
{
new int[] {1,3,5,7,9},
new int[] {0,2},
new int[] {5,11, 22},
new int[] {3,5,7,10,32}
};
2017/12/1 21:07:10 @Author:云都小生