指针数组问题,略急谢谢!

#include <stdio.h> main() { int d[][4]={1,2,3,4,5,6,7,8,9,10,11}; int *p[3],j; for(j=0;j<3;j++) p[j]=d[j]; printf("%5d %5d\n",*(*(p+2)+3),*(*(p+1)+1)); }
可以帮忙讲一下图里三个方框中的东西吗,看不懂


#include <stdio.h> main() { int d[][4]={1,2,3,4,5,6,7,8,9,10,11}; int *p[3],j; for(j=0;j<3;j++) p[j]=d[j]; printf("%5d %5d\n",*(*(p+2)+3),*(*(p+1)+1)); }
#include <stdio.h> main() { int d[][4]={1,2,3,4,5,6,7,8,9,10,11}; int *p[3],j; // p是一个指针数组 for(j=0;j<3;j++) p[j]=d[j]; // p指向了二位数组d的每一行的起始位置 printf("%5d %5d\n",*(*(p+2)+3),*(*(p+1)+1)); // p+2就是p[2],在+3表示d第3行第4个数,p+1就是p[1],再+1表示d第2行第2个数 }
int d[][4] = { 1,2,3,4, 5,6,7,8, 9,10,11,7//假如我在这个位置加一个7 };//二位数组 int *p[3], j; //*p[3] 指针数组 数组内每个元素都是一个指针 for (j = 0; j<3; j++) p[j] = d[j]; //通过3次循环给 *p[3] 指针数组内的每一个元素赋值 printf("%5d %5d\n", *(*(p + 2) + 3), *(*(p + 1) + 1)); //*(*(p + 2) + 3) *(p+2) 得到指针数组下标为3的地址也就是二维数组的首地址 (*(p + 2) + 3)二维数组数组下标为3的元素 我不加7的话就是你打印的结果 //*(*(p + 1) + 1)) 同上 system("pause");