又有问题了,关于简单的c

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:22:05
谭浩强的书里关于指针数组有这样的例子很不明白,希望各位大侠赐教
void Test_test()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
int i;
for(i=0;i<3;i++)
printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
for(i=0;i<3;i++)
printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));

}
而我编译的时候总是报错,不知道是什么原因(我就按他的例子抄的阿):
Error : (Serious) C2431E: non-constant initialiser (contains non-static address 'a')
还有,他说*a[i]会显示i行0列的值,是为什么啊?那我要显示i行j列是不是*a[i][j],那a[i][j]也是显示这个值为什么要加*号呢?
如果是编译器的问题,我要用什么方法来改这句呢?我用的是ads1.2 !
我有main函数,我在main里调用这个测试函数!我应该还没这么弱智没有main来执行!

a[i][j] <==> *(a[i]+j)

*a[i] <==>*(a[i]+0) <==> a[i][0]

入口函数为main()
你把Test_test换成main就可以了。

你用的编译器不支持用变量初始化变量 换一个吧

你的是一个函数,没有main函数当然会错咯
书上只是省略了的