二维数组
二维数组声明
每一个二维数组其实都可以被看作由特定数量的一维数组组成。我们可以通过如的形式进行声明。
在声明二维数组时,我们在第一个方括号内写的数字可以被视为一维数组的个数(如这里的),我们也可以称之为二维数组的“行数(number of rows)”;我们在第二个方括号内写的数字可以被视为是每个一维数组内的元素个数(如这里的),我们也可以称之为二维数组的“列数(number of columns)”。
我们在访问数组元素时,方括号内写的数字分别表示数组中的元素在行和列的编号,也可以称为“行索引”、“列索引”。
对于图上的这个二维数组,访问它的元素也需要分别说明在行、列上的索引,在二维数组matrix[2][3]中的元素,可以通过matrix[0][0],matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2] 进行访问。
二维数组初始化
二维数组和一维数组一样,也可以在声明的时候完成初始化过程。只不过,二维数组的初始化会有两层大括号,外层的大括号包裹了多组逗号分隔的内层大括号,每个内层大括号包裹了对应行的一维数组元素,两两元素之间用逗号进行了分隔。
int matrix[2][3] = {{2,4,5},
{4,7,9}};
二维数组元素访问
二维数组在内存中是连续存储的。从matrix[0][0]开始,内存中在它之后紧接着的是元素matrix[0][1]的空间,再之后是元素matrix[0][2]的空间;在所有matrix[0][?](问号表示任何可能的索引)的空间之后,紧接着的就是matrix[1][?]的元素所占的内存空间,依次被matrix[1][0],matrix[1][1],matrix[1][2]所占用。
从内存的角度来看,我们也可以将二维数组看作一种被分隔过的特殊一维数组,这个特殊的一维数组内的元素也为一维数组。我们也是可以通过地址上运算访问二维数组中的元素的。
二维数组输出
我们可以看到,在已经给出的代码中,现在声明并初始化了一个叫做matrix 的 二维数组,它有 3 行、5列。
在这一节,我们将依次读取二维数组的所有元素,并按行输出。我们已经知道,二维数组的每个元素都会有行索引和列索引。现在,已经给出了行索引的循环,使用变量i, 令i 依次为 0 到 2 ,你需要在这层for 循环内再写一层for 循环, 用于列索引的循环,对应使用变量j, 令j 依次为 0 到 4. 请写下:
for(j = 0; j < 5;j++) {
}
接下来,让我们在内循环中输出 第 i 行、 第j 个元素(请用 %d 作为格式)。并在内循环结束后(也就是一行输出完成时),输出\n 用于换行。
执行,然后成功输出了这个 3 * 5 的二维数组。
#include <stdio.h>
int main() {
int i;
int j;
int matrix[3][5] = {
{1, 2, 3, 4, 5},
{9, 8, 10, -2, -4},
{7, 6, -3, -1, -5}
};
for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76943.html