指针数组问题,略急谢谢!
程序代码:
#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));
}

2019-03-07 15:32
2019-03-07 15:44
程序代码:
#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个数
}

2019-03-07 16:59
程序代码:
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");
2019-03-14 02:27
2019-03-15 16:07
2019-03-15 16:07