二维数组的赋值及初始化
例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);
跟一维数组的初始化一样!!!!
总结:
二维数组名指向的是整个一维数组(整个二维数组的第一个一维数组)
二维数组名解引用是一维数组名!
下一篇:
生命游戏简介及算法分析(整理)
