1)二维数组是一个特殊的一维数组
2)inta[3][4]这个二维数组里面包含有三个一维数组,每一个一维数组里面又含有四个元素
3)定义一个一维数组a,它里面含有三个元素分别是a[0],a[1],a[2],而每个元素又是一个含有四个元素的一维数组
4)对于一维数组而言,a[i]就代表一个值,但对于二维数组而言,a[i]本身还是一个数组,a[i]是数组名,所以a[i]依然是一个指针
5)a+i是指向a[i]的而a[i]本身也是一个数组,所以a+i是指向一维数组的指针即行指针,且其移动单位是以数组为单位进行移动的
6)二维数组里面的a[i]是指向元素a[i][0],即a[i]是指向一维数组元素的指针(列指针)而且列指针是以元素为单位进行移动的
7)a,a+1,a+2虽然是行指针,但他们都是常量不能自加,为了能让行指针能够实现移动,就要定义一个行指针变量
8)int(*p)[数组长度]
9)如果把指向一维数组的指针赋给为二维数组的数组名的话,那么这个指针就可当成二维数组来使用
inta[3][4],(*p)[4]=a;
a[i][j]=p[i][j]=*(*(a+i)+j)=*(*(p+i)+j)
a[0][0]
a--a[0]-a[0][1]
a[0][2]
a[0][3]
a[1][0]
a+1-a[1]-a[1][1]
a[1][2]
a[1][3]
a[2][0]
a+2-a[2]-a[2][1]
a[2][2]
a[2][3]
*a=a[0]
*a[0]=a[0][0]
**a=a[0][0]
**(a+1)=a[1][0]
*(*a+1)=a[0][1]
*(*(a+1)+3)=a[1][3]
*(*(a+i)+j)=a[i][j]
(){inta[3][4]={1,2,0,1,1,1,0,2,3,2,0,1},k1,k2,k3;k1=(*a)[2];//a[0][2]k2=*(a[0]+3);printf("k1=%dk2=%d",k1,k2);}(){inta[3][4]={1,2,0,1,1,1,0,2,3,2,0,1},(*p)[4],k;p=a;k=**p;p++;k+=**p;printf("k=%d",k);//2}#(){inta[3][4]={1,2,0,1,1,1,0,2,3,2,0,1},(*p1)[4]=a,*p2=a[1],k;k=*(*p1+1)**p2;printf("k=%d",k);//2}
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。