目录

一、二维数组

 二、二维数组的赋值

三、二维数组在程序中赋值

        前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。而在很多实际问题中有很多量是多维的。而多维数组元素有多个下标,以标识他们在数组中的位置,所以也称为多下标变量。而二维以上的数组很少用到,所以接下来会介绍二维数组。

一、二维数组

        二维数组的定义格式如下:

[存储类型符]        数据类型符     数组变量名[整型常量表达式1][整型常量表达式2];

         与一维数组相比,二维数组不过多了个表达式,我们对二维数组可理解成一个矩阵,第一维为矩阵的行数,第二维为矩阵的列数。

        二维数组引用格式如下:

数组变量名[下标1][下标2]

 c语言将二维数组看作一个特殊的一维数组,他的数组元素是一个个的一维数组。

如:int a[2][3];

数组a可看成两个数组元素a[0],a[1]的一维数组;而a[0],a[1]又可看成是拥有三个int型数组元素构成的一维数组。如a[0]可看成是由数组元素a[0][0],a[0][1],a[0][2]构成的一维数组。

 二、二维数组的赋值

二维数组定义时,可以对数组变量赋初始值。有两种方法:

1、分行初始化赋值

一般格式为:

[存储类型符] 数据类型 数组变量名[行常量表达式][列常量表达式]=
{{第0行初值表},{第一行初值表},...,{最后一行初值表}};

 赋值规则为:将第0行初值表中的数据,依次付给第0行中的各种元素;将第1行初值表中的数据,依次赋给第一行各元素,依此类推。

例:

int a[2][3]={{1,2,3},{4,5,6}};//对数组元素全部赋值

这时a[0][0]的值便是1,a[0][1]的值便是2,依此类推。

与一维数组同样,数组中未赋值的元素默认为0.

例:

int a[2][3]={{1},{3}};//对数组元素部分赋值

这时a[0][0]的值为1,而a[0][1]的值因未赋值而为0,a[1][0]的值则为3.

一般来说二维数组中的第一维数组是可以省略的,但第二维数组则是一定不可省略的。

2、按元素在内存中的排序初始化赋值

这种方法的格式为:

[存储类型符] 数据类型 数组变量名 [行常量表达式][列常量表达式]={初值表};

 赋值规则为:按二维数组中元素在内存中的排列顺序,将初值表中的数据,依次赋值给各元素。

如:

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

 这是对数组元素全部赋值。

int a[ ][3]={1,2,3,4};

 这是对数组元素部分赋值,且省略了第一维大小。

三、二维数组在程序中赋值

如一维数组一样,二维数组在程序中赋值也可以通过赋值语句、循环逐一赋值以及使用库函数等进行。

如,下面程序则是通过键盘输入对二维数组a各元素赋值。

int i,j,a[2][3];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);

下面通过调用memset函数吧数组a的各元素清零。

memset(a,0,6*sizeof(int));