单选题
若有定义语句:int x[][3]={1,2,3,4,5,6};,则以下选项中与该语句等价的是______。
-
-
-
-
【正确答案】
D
【答案解析】[解析] 二维数组初始化时,可以省略第一维的大小,但是不能省略第二维大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:设有数组int a[m][n],如果要访问a[i][j]的值,编译器的寻址方式为:&a[i][j]=&a[0][0]+i*sizeof(int)*n+j*sizeof(int);(注意n为第二维的维数),所以第一维大小可以省略,第二维大小不可以省略。当定义并初始化二维数组省略第一维大小时,第一维的大小按以下规则决定:(1)当初值的大小能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;(2)当初值的个数不能被第二维的常量表达式的值除尽时,则第一维的大小等于所得的商数+1。本题中,二维数组a的初始值个数为6,第二维大小为3,所以第二维大小为2(6/3),所以a中包含两个元素,每个元素又是一个包含3个元素的数组,和选项D等价。故本题答案为D选项。