下面这段代码不合法,因为每一行都必须显式初始化 $3$ 个元素。
int arr[2][3] = {{1, 2}, {3}};答案B。综合分析各选项,运用相关知识推导。
仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。
【考点】数组初始化|多维数组
🎯 考纲定位:GESP 四级《数组与指针》模块核心考点。命题人卡住考生对多维数组初始化的理解——以为内层大括号可以省略元素,这是四级高频陷阱。
🧠 解题思维:先看外层维度:arr[2][3] 要求两行三列。逐行检查内层初始化:第一行 {{1, 2}, {3}} 只给两个元素,缺一个;第二行 {3} 只给一个元素,缺两个。C++ 规则:每行必须至少提供指定列数,否则编译失败。通法:多维数组初始化时,每一层大括号必须填满对应维度的元素,不可缺省。
🪤 陷阱拆解:陷阱设计:利用考生对嵌套大括号的惯性认知,认为内层可以少写元素。命题人故意给出 {{1, 2}, {3}},看似简洁实则违反规则。如果你只背结论("多维数组可以少写"),就会掉进这个坑。
🔄 反命题思维:若把题目改成 int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};,答案立刻变 A。刷到类似题,先问自己:命题人想考我哪一层维度?