二维数组的赋值及初始化
例1:
int aa[3][2]={ {1,2}, {3,4}, {5,6} }; printf("%d ",aa[0][0]);
例2:
char bb[3][4]={ "ni", "wo", "ta" }; printf("%s ",bb[0]);
注意:二维数组名解引用才是一维数组名,才是指向一维数组的指针。
定义字符类型二维数组时,个数不足列数也没关系,会自动补‘ ’
例3:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int i,(*b)[4]; for(i=0;i<2;i++) { b=a+i; printf("%d ",*(b[i]+1)); }
答案是:2,10
小结:二维数组名指向的是整个一维数组,二维数组名解引用(取*或者[])得到的是一维数组名,也即为指向一维数组首元素的指针。
取二维数组元素方法如下: a[2][3]
*(a[2]+3) (a[2]+3)[0]
b=a+1; b[1][3] *(b[1]+3) (b[1]+3)[0]
*((a+2)[0]+3) ((a+2)[0]+3)[0] *(*(a+2)+3) (*(a+2)+3)[0]
二维数组的初始化:
char ch[2][3];
memset(ch,0,2*3);
跟一维数组的初始化一样!!!!
总结:
二维数组名指向的是整个一维数组(整个二维数组的第一个一维数组)
二维数组名解引用是一维数组名!
下一篇:
生命游戏简介及算法分析(整理)