C语言锯齿数组

示例

锯齿状数组是包含原始数组(或其他集合)的数组,而不是原始类型。这就像一个数组数组-每个数组元素都包含另一个数组。
它们类似于多维数组,但有细微差别-由于多维数组限于固定数量的行和列,而锯齿状数组的每一行可以具有不同数量的列。

声明锯齿状数组

例如,声明一个具有8列的锯齿状数组:

int[][] a = new int[8][];

第二个[]没有数字初始化。要初始化子数组,您需要分别进行:

for (int i = 0; i < a.length; i++) 
{
    a[i] = new int[10];
}

获取/设置值

现在,获得子阵列之一很容易。让我们打印第3列的所有数字a:

for (int i = 0; i < a[2].length; i++)
{
    Console.WriteLine(a[2][i]);
}

获得特定值:

a[<row_number>][<column_number>]

设置特定值:

a[<row_number>][<column_number>] = <value>

切记:始终建议使用锯齿状的数组(数组的数组),而不是多维数组(矩阵)。使用起来更快,更安全。


注意括号的顺序

考虑的一维数组的五维数组的三维数组int。这是用C#编写的:

int[,,][,,,,][] arr = new int[8, 10, 12][,,,,][];

在CLR类型系统中,括号排序的约定是相反的,因此在上述arr实例中,我们有:

    arr.GetType().ToString() == "System.Int32[][,,,,][,,]"

同样:

    typeof(int[,,][,,,,][]).ToString() == "System.Int32[][,,,,][,,]"