二维数组的赋值及初始化

例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);

跟一维数组的初始化一样!!!!

总结:

二维数组名指向的是整个一维数组(整个二维数组的第一个一维数组)

二维数组名解引用是一维数组名!

经验分享 程序员 微信小程序 职场和发展