读书人

请问一个多维数组的有关问题

发布时间: 2013-09-28 10:01:20 作者: rapoo

请教一个多维数组的问题

int a[7][8][9],*ptr,m;
ptr=(int*)a;
for(m=0;m<sizeof(a)/sizeof(int);m++,ptr++)
*ptr=m;
Printf(“%d”,a[1][10][2]);


为什么结果是164.
[解决办法]
你的数组第二维大小为8,你能写一个a[1][10][2],第二维下标为10了。
a[1][10][2] 实际上指向的是a[2][2][2]
[解决办法]
sizeof(a)/sizeof(int) = 7*8*9+ = 504

C语言里面只有一维数组,

不管是a[][][]只要你的下标总和不超过504,都是有效的

而a[1][10][2] 是第 1*8*9+10*9+2 = 164个元素

for(m=0;m<sizeof(a)/sizeof(int);m++,ptr++)
*ptr=m;
这条语句是将0~503依次分配到数组a中,所以结果是164.

读书人网 >C语言

热点推荐