例如:int a[2] [3];
定义了 a是一个2行3列的数组,一共6个元素,分别是a[0] [0]、a[0] [1]、a[0] [2]、a[1] [0]、a[1][1]、a[1][2]。
像int a[2,3]这样的格式就是错误的。
二维数组的注意点与一维数组相同
二维数组元素引用与一维数组元素引用一样,也要采取下标法。
引用形式:数组名[下标1] [下标2]
注意:下标不能越界
一般格式:
类型说明符 数组名 [行常量表达式] [列常量表达式]={{第0行初值表},{第2行初值表},{最后1行初值表}};
赋值规则为:将“第0行初值表”中的数据,依次赋给第0行中的各元素;将“第1行初值表”中的数据,依次赋给第1行元素;以此类推。下面给出例子。
例1:对数组元素全部赋值
int a[2] [3]={ {1,2,3},{4,5,6}};
其数组元素各自对应的值为:a[0] [0]=1,a[0] [1]=2,a[0] [2]=3,a[1] [0]=4,a[1] [1]=5,a[1] [2]=6。
也可以将数据写在一个花括号内,按数据在内存中的排序顺序对个元素赋初值
故上式也可直接写为int a[2] [3]={1,2,3,4,5,6};
例2:对数组元素部分赋值
int a[2] [3]={{1},{3}};
其数组元素各自对应的值为:a[0] [0]=1,a[0] [1]=0,a[0] [2]=0,a[1] [0]=3,a[1] [1]=0,a[1] [2]=0。
也可以对各行中的某一元素赋值
如:a[2] [3]={{0,1,0},{0,0,3}};
其数组元素各自对应的值为:a[0] [0]=0,a[0] [1]=1,a[0] [2]=0,a[1] [0]=0,a[1] [1]=0,a[1] [2]=3。
例3:如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但是第二维的长度不能省。
如:int a[2] [3]={ {1,2,3},{4,5,6}};
它等价于int a[ ] [3]={ {1,2,3},{4,5,6}};
例1:将二维数组行列元素互换,存到另一个数组中
#include <stdio.h>
main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{ for(j=0;j<=2;j++)
{ printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{ for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}