a[2][3],二维数组中,a[0]表示并非数组元素,而是数组地址
/************/
/************/
即a[0] = &a[0][0],
a[0] = *(a+0)表示a数组子数组的地址
/************/
/************/
#include <stdio.h>
int main(){
int arr[3][4] = {{11,22,33,44},{55,66,77,88},{123,345,567,789}};
int i;
int j;
for(i=0; i<3; i++){
for(j=0; j<4; j++){
printf("add:0x%p,data:%d\n",&arr[i][j],arr[i][j]);
printf("add:0x%p,data:%d\n",arr[i]+j,*(arr[i]+j)); //arr[i] 表示子数组地址
printf("add:0x%p,data:%d\n",*(arr+i)+j,*(*(arr+i)+j)); //*(arr+i)和arr[i]是等价的
printf("==========================================\n");
}
}
return 0;
}
数组指针