c语言二维数组地址问题 求大神讲解!!

如下图 为什么起始地址是2000 a[0][1]的地址是2004 到了a[1][0]就成了2010了?不应该是2012吗 int不是四个字节吗?

图中的首地址应该是16进制0x2000,表述不太严谨。你的分析不正确,a[1][0应该比首地址偏移4个int,也就是偏移16字节。0x2010比0x2000正好大16。追问

也就是这幅图的问题

已追加10分悬赏 劳烦您看一下 谢谢

追答

a+1里的1是4个字节不是2个,因此a+1=0x2000+4*4=0x2010;
a[1]+1是偏移4个再偏移1个,总共偏移5个,所以a[1]+1=a+5=0x2000+5*4=0x2014.

温馨提示:答案为网友推荐,仅供参考
相似回答