假设二维数组a定义为float a [3][4],下列对数组第二行第二列元素引用方法中,错误的是

A *(a[0]+5) B a[2][2] C a[1][1] D *(a[1]+1)
答案什么?为什么?

答案很显然是B,因为B和C必须有一个错了。
这里有3个"包含了4个float元素的数组"的数组,要知道这3个数组的内存是连续的,所以总共12个float,假设初始化为: {1, 2, 3, 4}{5, 6, 7, 8}{9, 10, 11, 12},他们在连续的内在中。题中的二行二列元素就是"6"。
a, a[0], a[0][0]都指向同一个地址(1的地址,但含义完全不一样)。
a[0], a[1], a[2]分别是第一、二、三个数组的地址,是float*指针,所以a[1]本来指向5,+1后指向6。a[0]本来指向1,+5后指向6。
理解为x[4],y[4], z[4]三个连在一起的数组,那么题中的a[1]=y,a[1]+1=y+1
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-22
只有B是错的。
选B
第二行第二列对应的是a[1][1],而不是a[2][2],因此B是错误的。
其它三种引用方法都是可以的。本回答被网友采纳
第2个回答  2012-03-09
答案选B。因为数组的起始是a[0][0],a[2][2]表示的是第三行第三列的元素
第3个回答  2019-10-19
第二行第二列的元素就是a[2][2],虽然c语言下标是从0开始,a[0][0]即是第一个元素,表示第0行第0列。
而a[3][4]表示共3行共4列。
第4个回答  2012-03-09
一看就知道从 b,c中找答案,C/C++是从0开始计数的,所以1,1就是所谓的第二行第二列,2,2,就是第三行第三列了