用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<iostream>
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* p0[3]={a,b,c};
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
printf("%d ",*(*p0+3*i+j));
printf("\n");
}
printf("\n");
printf("\n");
int p1[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}
};
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
printf("%d ",*(*p1+3*i+j));
printf("\n");
}
}
运行结果及详细报错内容
我的解答思路和尝试过的方法
问题发现在数组的定义上,如果是直接定义二维数组,那么结果是正确的;如果改用指针数组的定义方式,结果是错误的
当然还有一点就是,如果p0数组改用别的输出方式,如下
printf("%d ",*(p0[i]+j));
printf("%d ",p0[i][j]);
那么结果也是正确的
我想要达到的结果
想知道其内部的原理!