满意答案
daxuezi
2013.12.31
采纳率:49% 等级:12
已帮助:6162人
假设数组是a[m][n],并且假定系统为其分配的是一整块内存,那么元素在内存中存放的顺序依次是:
a[0][0],a[0][1].....a[0][n-1],
a[1][0],a[1][1].....a[1][n-1],
a[2][0],a[2][1].....a[2][n-1]
.......
a[m-1][0],a[m-1][1].....a[m-1][n-1]
共mxn个元素。请注意,分行/分列是人为的,只是为了便于从逻辑上描述,实际上每一个元素的起始地址,从左到右,再到下一行的最左边,都是顺序增加的。
下面是用来验证上述元素顺序的一个简单小程序以及运行结果。
#include
int main()
{
int a[3][4];
int *p;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
a[i][j]=(i+1)*(j+2);
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
p=&a[0][0];
for (i=0;i<12;i++)
{
printf("*(p+%d)=%d\n",i,*(p+i));
}
return 0;
}
程序运行结果:
a[0][0]=2
a[0][1]=3
a[0][2]=4
a[0][3]=5
a[1][0]=4
a[1][1]=6
a[1][2]=8
a[1][3]=10
a[2][0]=6
a[2][1]=9
a[2][2]=12
a[2][3]=15
*(p+0)=2
*(p+1)=3
*(p+2)=4
*(p+3)=5
*(p+4)=4
*(p+5)=6
*(p+6)=8
*(p+7)=10
*(p+8)=6
*(p+9)=9
*(p+10)=12
*(p+11)=15
07分享举报