在 C++ 中,int a[] = {1, 2, 3, 4, 5}; 可以定义一个包含 5 个元素的整型数组。
答案A。定义数组时[]内必须是常量表达式(可用char常量作为下标,因为char本质是整数)。int c[3.0]不合法。
C++不允许对数组直接赋值(如int a[3]=b不合法),但可以逐个赋值元素。
【考点】数组定义|大小推断|初始化列表
1. 🎯 考纲定位(考点定位) 本题考查 GESP 三级 C++ 大纲中"数据类型与数组"模块,属于基础语法类题目。命题人卡住多数考生的弱点在于对数组定义的灵活性认知不足——很多人只会写 int a[5] 这种显式指定大小的形式,却忽略了 C++ 允许通过初始化列表自动推断数组长度。
2. 🧠 解题思维(拆解与通法) 看到题先想:这个声明是否符合 C++ 语法规则?关键观察是 a[] 这种写法在 C++ 中是合法的,编译器会根据花括号内的元素个数自动确定数组长度。推理依据是 C++ 标准库对数组定义的规范——允许省略尺寸,通过初始化列表推断。这一类题的通法是:遇到数组声明,先看是否有花括号,有则检查元素数量,无则看是否写了维度。
3. 🪤 陷阱拆解(命题人的套路) 错误选项 B 利用的是"数组大小必须显式指定"的思维定式。命题人特意去掉了维度,就是想测试你是否真的理解 C++ 的灵活定义机制。最阴险的细节是"可以定义"这个表述——它不要求你写出具体大小,只要求语法合法。如果你只背结论、不理解本质,就会掉进这个陷阱。
4. 🔄 反命题思维(教练升华) 站在命题人视角,如果把"可以定义"改成"数组大小为 4",就变成考察 sizeof 运算符的题目;如果想让答案变错,只需把数组名改成 int a[5] = {1,2,3,4}; 这种显式指定但初始化不完整的情况。刷到类似题时,先问自己"命题人想考我什么"。