静态的二维数组,在创建的时候,就可以初始化其所有的元素,初始化是由逗号分隔的一维数组的初始化组成。
如下我们初始化一个4行5列的数组,每行有5个数据,那么在初始化数组的时候,给每行一个一维数组,初始化4行,就构成了了4行5列的二维数组。
二维数组的访问,我们可以按照行来访问,也可以按照列来访问。这里我们都需要用到嵌套循环。
1. 按照行来访问(一行一行数据的输出):
在嵌套循环中,外层循环在进入执行一次的时候,内层循环要执行完整个循环;
也就是外层循环每执行一次,内层循环就要完整的执行一次。总的执行次数是:外循环次数*内循环次数。
分析代码,我们能看出来,
当执行第1次循环,i为0的时候,j可以取值0,1,2,3,4, 依次读出了data[0][0],data[0][1],data[0][2],data[0][3],data[0][4]五个数,这里读出了第1行的5个数;
当执行第2次循环,i为1的时候,j可以取值为0,1,2,3,4,依次读出了data[1][0],data[1][1],data[1][2],data[1][3],data[1][4]五个数,这里读出了第2行的5个数.......最后实现了按行输出。
2. 按照列来访问(第一次输出每行的第1列;第二此输出每行的第2列...):
按照嵌套循环的先执行外循环再执行内循环原理。这个时候我们就需要将代表行的循环放到外层,代表列的循环放到里层。
分析代码我们能看出:
执行第1个循环,j为0,的时候,i可以取值0,1,2,3,4。这个时候依次读出了data[0][0],data[1][0],data[2][0],data[3][0],data[4][0]。这里读出了每行的第1个元素
执行第2个循环,j为1,的时候,i可以取值0,1,2,3,4。这个时候依次读出了data[0][1],data[1][1],data[2][1],data[3][1],data[0][1]。这里读出了每行的第2个元素,...... 最终实现了按列读出.
源码:
// Len_TwoArray.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int data[4][5] = { { 101, 102, 103, 104, 105 },
{ 201, 202, 203, 204, 205 },
{ 301, 302, 303, 304, 305 },
{ 401, 402, 403, 404, 405 } };
// 按照每行访问
printf("\n\t按行读出显示:\n");
for (int i = 0; i < 4; i++)
{
printf("\t");
for (int j = 0; j < 5; j++)
{
printf("%d ", data[i][j]);
}
printf("\n");
}
// 按照每列访问
printf("\n\n\t按列读出显示:\n");
for (int j = 0; j < 5; j++)
{
printf("\t");
for (int i = 0; i < 4; i++)
{
printf("%d ", data[i][j]);
}
printf("\n");
}
return 0;
}
执行结果: