{ int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++) p[i]=i; for(i=0;i<3;i++) printf("%d",a[1][i]

2025-02-02 23:59:53
推荐回答(2个)
回答1:

这个其实就是涉及到二维数组在内存是如何存储的问题了。
二维数组在内存中是存储在一个连续的内存空间之中,并且是按行存储的。因此,我们定义的时候,都会要求一定要指明二维数组的列数,即int a[][5],b[2][6],这个5和6是一定要指明的,否则就会报错。当然了,那种直接初始化的不算。
比如,定义int a[3][3], *p; p = a;这样就是说p指向了二维数组的首地址。而二维数组时连续的存储空间,因此,p[0] == a[0][0] ,p[1] == a[0][1] ,p[2] == a[0][3] ,p[3] == a[1][0] ,p[4] == a[1][1] ,p[5] == a[1][2] ,p[6] == a[2][0] ,p[7] == a[2][1] ,p[8] == a[2][2];
这样应该能明白了吧!

回答2:

a[i][j];
int m=0;
for(j=0,j<3,j++)
{
for(i=0;i<3;i++)
{
a[i][j]=m;
m++;
}
}