📜  C 中的锯齿状数组或数组数组与示例(1)

📅  最后修改于: 2023-12-03 15:29:44.517000             🧑  作者: Mango

C中的锯齿状数组或数组数组

在C中,可以使用锯齿状数组或数组数组来处理多维数组。锯齿状数组是一个具有不同大小的子数组的数组,而数组数组是一个具有相同大小的子数组的数组。下面将介绍如何声明和初始化这两种类型的数组,以及如何访问它们的元素。

声明和初始化锯齿状数组

声明和初始化一个锯齿状数组需要在数组的最后一个维度上指定大小。例如,下面的代码声明和初始化了一个具有3个子数组的锯齿状数组:

int jagged[3][];
jagged[0] = (int[]){ 1, 2 };
jagged[1] = (int[]){ 3, 4, 5 };
jagged[2] = (int[]){ 6 };

在这个例子中,第一个子数组包含两个元素,第二个子数组包含三个元素,第三个子数组包含一个元素。要访问锯齿状数组的元素,必须指定所需的子数组的索引和子数组中元素的索引。例如,要访问第二个子数组的第三个元素,可以使用以下代码:

int element = jagged[1][2];
声明和初始化数组数组

声明和初始化一个数组数组需要在所有维度上指定相同的大小。例如,下面的代码声明和初始化了一个具有3个子数组,每个子数组包含2个元素的数组数组:

int array[3][2] = {
    { 1, 2 },
    { 3, 4 },
    { 5, 6 }
};

在这个例子中,每个子数组都包含两个元素。要访问数组数组的元素,必须指定每个索引的位置。例如,要访问第二个子数组的第一个元素,可以使用以下代码:

int element = array[1][0];
示例

以下是一个完整的示例,演示如何使用锯齿状数组和数组数组:

#include <stdio.h>

int main() {
    // Declare and initialize a jagged array.
    int jagged[3][];
    jagged[0] = (int[]){ 1, 2 };
    jagged[1] = (int[]){ 3, 4, 5 };
    jagged[2] = (int[]){ 6 };
    
    // Access an element in the jagged array.
    printf("Element at [%d][%d]: %d\n", 1, 2, jagged[1][2]);
    
    // Declare and initialize an array array.
    int array[3][2] = {
        { 1, 2 },
        { 3, 4 },
        { 5, 6 }
    };
    
    // Access an element in the array array.
    printf("Element at [%d][%d]: %d\n", 2, 0, array[2][0]);
    
    return 0;
}

此代码将输出以下内容:

Element at [1][2]: 5
Element at [2][0]: 5