若有定义:int a[4][6];则能正确表示a数组中任一元素a[i][j](此处0<=i<4,0<=j<6)地址的表达式是____

A &a[0][0]+6*i+j
B &a[0][0]+4*j+i
C &a[0][0]+4*i+j
D &a[0][0]+6*j+i

答案是 A, 我怎么觉得c正确呢,,郁闷ing

呵呵,你还没弄清楚数组的内存排列呢,a[4][6]应该是这样的
000000111111222222333333
有四个数组,每个数组6个。就是a答案。
编译器必需知道第二个数字以逐步分配内存。所以可以第一个数字为空,即a[][6],每次分配6,大不了她死循环的分配内存,但是如果第二个数字为空,即a[4][],那么第一次分配的时候她就不知道要分配多少,也就没有第二次,是不允许的。
呵呵,C有很多貌似没有道理的东西,你要明白了就很简单的了。
祝你学习快乐!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-24
如果答案是c的话,那么 &a[0][0]+4*i+j<&a[0][0]+18
但是a数组有24个元素,自然错了
第2个回答  2011-04-24
郁闷都知道是A 还提问·?
相似回答