#include<stdio.h>
int main(){
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf("%d.",*(*(a+i)+j));
printf("\n");
int(*p)[4];
p=a;
for(i=0;i<3;i++){
for(j=0;j<4;j++)
printf("%d.",*(*(p+i)+j));
}
return 0;
}
注:
a 二维数组首地址
a + i <=> &a[i] 第i行首地址行指针指向行
a[i] <=> *(a+i) <=> &a[i][0] 列指针指向列
a[i] + j <=> *(a+i) + j <=> &a[i][j]
*(a[i] + j) <=> *(*(a + i) + j) <=> a[i][j]
a[0][1] <=> *(*p + 1)或(*p)[1] a[1][2] <=> *( (*p + 1) + 2 )
自己总结的希望对你有用