首页 > 试题广场 >

以下能对二维数组 a 进行正确初始化的语句是( )。

[不定项选择题]
以下能对二维数组 a 进行正确初始化的语句是()
  • int a[2][]={{1,0,1},{5,2,3}};
  • int a[][3]={{1,2,3},{4,5,6}};
  • int a[2][4]={1,2,3},{4,5},{6}};
  • int a[][3]={{1,0,1},{},{1,1}};
定义二维数组时,不能省略第二维的大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:
      设有数组int a[m][n],如果要访问a[i][j]的值,编译器的寻址方式为:
     &a[i][j]=&a[0][0]+i*sizeof(int)*n+j*sizeof(int); //注意n为第二维的维数,
发表于 2017-09-29 15:29:25 回复(4)
C 少了一个{
发表于 2017-08-31 13:03:16 回复(11)
忽然就变成多选题了
发表于 2017-09-14 15:16:04 回复(0)
A: 二维数组初始化可以省略第一维长度, 第二维不可省略
B: Right
C: 花括号不配对
D:Right

发表于 2017-12-08 23:14:18 回复(6)
定义二维数组时,如果对全部元素都赋初值,则定义数组时可以对第一维的长度不指定,但第二维的长度不能省去。D为什么不对?
编辑于 2017-05-16 16:53:46 回复(2)
数组是按照一行的方式进行存储的,所以二维数组的定义必须指定第二个维的大小,才能分辨出二维数组的组成
发表于 2020-01-12 20:27:17 回复(0)
这么明显的错误居然这么多赞??


发表于 2021-01-03 12:06:31 回复(1)
A为什么不对
发表于 2017-12-03 11:10:06 回复(0)
行可以不规定,列一定要规定
发表于 2019-12-10 20:55:17 回复(0)
java里面二维数组就三种定义方法: 1.int a[][]=new int[2][3]; 2.int a[][]=new int[][]{{1,2,3},{4,5,6}}; 3.int a[][]={{1,2,3},{4,5,6}}; 前面两个方括号不能写,第一种情况后面的方括号可以省略列不能省略行,然后前面两个方括号的顺序可以随意,比如int []a[]
编辑于 2019-10-06 22:56:31 回复(0)
我的编译器都过不去
发表于 2019-03-30 00:57:07 回复(0)
C这种又是考眼神嘛
发表于 2018-12-25 14:44:11 回复(0)
这题目没有意思啊,再java中的这种声明是编译不过去的,只要前面不带任何行列限制才会通过
发表于 2018-05-14 17:20:36 回复(0)

D 是对的,楼下两位的答案可能在当时做题时牛客网的工程师们没考虑那么多的缘故吧,导致答案错了

发表于 2017-07-28 10:48:07 回复(0)
同问D为什么不对。 虽然在vc里面每个花括号里面必须有一个数字,但是vs编译是可以过的~~
发表于 2017-05-29 13:39:04 回复(2)
JAVA和C语言好像相反吧
发表于 2022-09-14 14:06:53 回复(0)
行可以不写,但列必须有
发表于 2020-11-02 11:04:50 回复(0)

D为什么是对的?我记得定义二维数组的时候不能有全空的吧?

发表于 2019-09-04 18:23:32 回复(0)

二维数组在定义时只能省略第一维的维度,不能省略第二维的维度。

在定义时赋值,维度层数要正确、最低维度不一定要所有的位置都赋值。

编辑于 2024-01-24 19:49:06 回复(0)
先不谈这是java数组专项训练,题目就不能加个c++语言中?
发表于 2023-03-17 18:17:56 回复(0)