首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-09-28 
请教一个多维数组的问题int a[7][8][9],*ptr,mptr(int*)afor(m0msizeof(a)/sizeof(int)m++,ptr++)*

请教一个多维数组的问题

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.

热点排行