比如a[3][3]={"a1","b2","c3"}
按顺序 a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],........a[2][2]
其中 a ,a+1,a+2表示 3个连续地址的地址常量 补充!(数组名不=指针,数组名是常量指针,不能改变其值)
分别指向3个连续地址的首地址,分别&a[0][0]-&a[0][2]首地址;&a[1][0]-&a[1][2]首地址;&a[2][0]-&a[2][2]首地址
所以*(a)[0]='a' *(a+1)[0]='b' *(a+2)[0]='c'
补充!!!说得多不如上图
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/c8ea15ce36d3d53913ec90493187e950342ab063?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
#include<stdio.h>
int main()
{
char a[3][3]={"a1","b2","c3"};
printf(" a=0x%x\n",(unsigned)a);
printf(" *(a)=0x%x\n",(unsigned)*(a));
printf(" a+1=0x%x\n",(unsigned)(a+1));
printf(" *(a+1)=0x%x\n",(unsigned)*(a+1));
printf(" a+2=0x%x\n",(unsigned)(a+2));
printf(" *(a+2)=0x%x\n",(unsigned)*(a+2));
printf("&a[0][0]=0x%x\n",(unsigned)(&a[0][0]));
printf("&a[0][1]=0x%x\n",(unsigned)(&a[0][1]));
printf("&a[0][2]=0x%x\n",(unsigned)(&a[0][2]));
printf("&a[1][0]=0x%x\n",(unsigned)(&a[1][0]));
printf("&a[1][1]=0x%x\n",(unsigned)(&a[1][1]));
printf("&a[1][2]=0x%x\n",(unsigned)(&a[1][2]));
printf("&a[2][0]=0x%x\n",(unsigned)(&a[2][0]));
printf("&a[2][1]=0x%x\n",(unsigned)(&a[2][1]));
printf("&a[2][2]=0x%x\n",(unsigned)(&a[2][2]));
return 0;
}