目录
一、二维数组
二、二维数组的赋值
三、二维数组在程序中赋值
前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。而在很多实际问题中有很多量是多维的。而多维数组元素有多个下标,以标识他们在数组中的位置,所以也称为多下标变量。而二维以上的数组很少用到,所以接下来会介绍二维数组。
一、二维数组
二维数组的定义格式如下:
[存储类型符] 数据类型符 数组变量名[整型常量表达式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));