#include
int main(int argc, char** argv){
int a[3]={1,2,3};
int b[3]={4,5,6};
int c[3]={7,8,9};
int* p[3]={a,b,c};
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
printf("%d ",*(*p+3*i+j));
printf("\n");
}
}
运行结果如下
使用过调试,但是也没有分析出原因
更改过打印方式,*(p+3i+j)改成p[3][3]
结果正确
展示代码里的*(p+3i+j)应该原理是正确的,但不明白具体逻辑错哪了?
应该是
printf("%d ",*(*(p+i)+j));