二维数组-(C语言)

二维数组

二维数组声明

在这里插入图片描述
在这里插入图片描述
每一个二维数组其实都可以被看作由特定数量的一维数组组成。我们可以通过如的形式进行声明。
在声明二维数组时,我们在第一个方括号内写的数字可以被视为一维数组的个数(如这里的),我们也可以称之为二维数组的“行数(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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值