以下二维数组的初始化,哪个是符合语法的?( )。
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】多维数组声明(列数必须,行数可缺)|数组初始化(空数组合法,元素个数匹配)|二维数组整体赋值(不能整体赋给一维数组)
1. 考纲定位:GESP 八级大纲“数组与多维数组”章节明确:声明二维数组时列数必须指定,行数可省略;初始化时元素个数必须与声明维度匹配,空数组={}合法。命题人把“列数省略”“行数省略”“空数组”“元素个数不匹配”四个典型错误压缩在一题,卡住的是只背“二维数组要写两个维”的考生。
2. 解题思维:逐项拆解——A 缺列数非法;B 行数省略合法,列数指定且空数组合法;C 子数组元素数(3)与列数(2)矛盾非法;D 缺列数非法。通法:多维数组声明时列数必须明确,行数可推;初始化时元素个数必须匹配列数,空数组={}是合法的特殊情况。
3. 陷阱拆解:A、D 利用“二维数组只要写两个维即可”的误区,实际列数必须;C 利用“整体赋值”思维,忽略每个子数组元素数必须与列数一致;B 最阴险,空数组初始化行数会被推断为 0,很多考生以为“数组必须有元素”而误判。只背结论不理解本质,就会掉进 B 这个陷阱。
4. 反命题思维:若 B 改为int a[][3] = {{1,2,3}};则行数推断为 1,合法;若 C 改为int a[2][2] = {{1,2},{3,4},{5,6}};元素数超限,编译错误。命题人想让你识别的是“列数必须、行数可缺、元素个数匹配、空数组合法”。刷到类似题,先问自己“列数是否明确?行数是否可省略?元素个数是否匹配?空数组是否合法?”