C语言二维数组的定义和使用(非常详细)

C语言二维数组的定义和使用(非常详细)

假设有一个名为 A 的一维数组,它包含了 10 个 int 类型的元素。另外,还有一个名为 B 的数组,它包含了 5 个元素,每个元素都是一个包含 10 个 int 元素的数组,如下图所示:

图 1 数组作为数组的元素

我们知道如何声明一个包含 10 个 int 元素的数组 A,即使用 int A[10]进行声明。那么,如何声明一个包含 5 个元素、每个元素都是一个包含 10 个 int 元素的数组 B 呢?

首先,让我们回顾数组的声明公式,如下图所示:

图 2 数组的声明公式

数组的声明包含了数组名、元素类型和元素数量三个要素。

现在,我们可以尝试声明一个名为 B 的数组,元素类型为 int[10],元素数量为 5。根据上述公式,我们可以得出以下声明:

int[10] B[5];

但还需要将数组名左边的方括号都移到最右边:

int B[5][10];

这样,我们就成功地声明了一个名为 B 的数组,它包含了 5 个元素,每个元素都是一个包含 10 个 int 元素的数组,如下图所示。

图 3 数组的声明公式

通过使用数组名[下标]的形式,我们可以访问数组内的元素。例如,B[0]是数组 B 的第一个元素,而数组 B 的每个元素都是一个 int[10] 类型的数组,如下图所示。

图 4 数组第一层

要进一步访问数组 B[0] 中的 int 元素,我们需要使用 B[0][0] 这样的形式。这将访问第一个元素中的第一个元素,如下图所示:

图 5 访问二维数组

我们可以看到,数组构成了一个二维的矩阵,并且可以通过下标轻松地访问它的每个元素。

二维数组的初始化

我们已经学习了如何初始化一维数组,例如:

int A[10] = {0, 1, 2, 3, 4, 5 ,6 ,7 ,8 ,9};

对于一个二维数组,由于它的每个元素都是一个数组,因此我们可以使用以下方式对它进行初始化:

int B[5][10] = {

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},

{10, 11, 12, 13, 14, 15, 16, 17, 18, 19},

{20, 21, 22, 23, 24, 25, 26, 27, 28, 29},

{30, 31, 32, 33, 34, 35, 36, 37, 38, 39},

{40, 41, 42, 43, 44, 45, 46, 47, 48, 49}

};

与一维数组相似,如果初始化列表中的常量个数少于元素个数,则剩余元素将使用 0 进行初始化:

int B[5][10] = {

{0, 1, 2, 3, 4, 5},

{10, 11, 12, 13, 14, 15},

{20, 21, 22},

{30},

{0}

};

另外,我们也可以省略内层花括号,代码如下:

int B[5][10] ?= {

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

10, 11, 12, 13, 14, 15, 16, 17, 18, 19,

20, 21, 22, 23, 24, 25, 26, 27, 28, 29,

30, 31, 32, 33, 34, 35, 36, 37, 38, 39,

40, 41, 42, 43, 44, 45, 46, 47, 48, 49

}

省略内层花括号时,如果元素的个数不足,那么后续的元素也将使用 0 进行初始化,代码如下:

int B[5][10] = {

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

10, 11, 12, 13, 14, 15, 16, 17, 18, 19

}

访问二维数组

由于二维数组有两个下标,我们通常使用嵌套循环来遍历它。

下面是一个示例程序,它定义一个二维整型数组 B,其中包含 5 个一维数组,每个一维数组中有 10 个整数。

#include

int main()

{

int B[5][10] = {

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},

{10, 11, 12, 13, 14, 15, 16, 17, 18, 19},

{20, 21, 22, 23, 24, 25, 26, 27, 28, 29},

{30, 31, 32, 33, 34, 35, 36, 37, 38, 39},

{40, 41, 42, 43, 44, 45, 46, 47, 48, 49}

};

for(int i = 0; i < 5; i++)

{

for(int j = 0; j < 10; j++)

{

printf("%d ", B[i][j]);

}

printf("\n");

}

return 0;

}

我们使用了两个 for 循环遍历整个二维数组 B,外层循环控制行,内层循环控制列。对于每个数组元素,我们使用了 B[i][j] 的形式对其进行访问。运行结果为:

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

20 21 22 23 24 25 26 27 28 29

30 31 32 33 34 35 36 37 38 39

40 41 42 43 44 45 46 47 48 49

通过上述示例程序,我们可以看到如何遍历二维数组,并访问其中的每个元素。

修改二维数组元素

修改二维数组元素同样使用赋值运算符,代码如下:

B[i][j] = B[i][j] * 2; // 修改二维数组值

下面是一个修改二维数组元素的示例,它将二维数组中的每个元素都设置为原来的 2 倍:

#include

int main()

{

int B[5][10] = {

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},

{10, 11, 12, 13, 14, 15, 16, 17, 18, 19},

{20, 21, 22, 23, 24, 25, 26, 27, 28, 29},

{30, 31, 32, 33, 34, 35, 36, 37, 38, 39},

{40, 41, 42, 43, 44, 45, 46, 47, 48, 49}

};

for(int i = 0; i < 5; i++)

{

for(int j = 0; j < 10; j++)

{

B[i][j] = B[i][j] * 2; // 修改二维数组值

printf("%d ", B[i][j]); // 输出修改后的值

}

printf("\n");

}

return 0;

}

运行程序后,结果为:

0 2 4 6 8 10 12 14 16 18

20 22 24 26 28 30 32 34 36 38

40 42 44 46 48 50 52 54 56 58

60 62 64 66 68 70 72 74 76 78

80 82 84 86 88 90 92 94 96 98

相关推荐

G4560配什么主板好(3款主板推荐)
365bet网投官网

G4560配什么主板好(3款主板推荐)

📅 07-11 👁️ 3839
软件开发的英文怎么说
365bet网投官网

软件开发的英文怎么说

📅 07-09 👁️ 6356
学术论文检索号(了解其概念和作用)
365bet网投官网

学术论文检索号(了解其概念和作用)

📅 07-04 👁️ 5546
牛津英語詞典
beat365手机下载

牛津英語詞典

📅 07-07 👁️ 9006
全球10大最顶级的耳机品牌,森海塞尔公认第一,铁三角排第二
为什么古代通房丫鬟地位最高?只因这一特殊原因,实在太没人性了