以下数组定义,符合 C++ 语言语法的是( )。
这题考数组声明的语法限制。拿到题先别急着看选项,脑子里过一遍数组定义的骨架:类型 + 变量名 + [常量表达式]。重点盯住方括号里填的是什么——是变量、浮点数还是字符常量?只要记住'长度必须是编译期确定的整型常量',A缺长度、C用浮点、D顺序颠倒都能一眼排掉。
学生最容易掉进两个坑:一是觉得'3'带引号就是字符串或者非法字符,其实字符常量'3'在C++里本质就是整型常量51,完全合法;二是看到3.0觉得'反正能转成3'就选了C,忽略了浮点类型本身不能作为数组长度,编译期直接报错。另外很多人会混淆变量和常量,以为只要写了数字就行,忘了必须是常量表达式,所以看到选项里有变量(虽然这题没给)就要警惕。
【考点】常量表达式、数组声明语法、字符常量本质。
GESP三级C++编程基础里,数组声明是必考项,命题人放这道题,就是专门卡住那些只背'数组必须有长度'却不懂'长度必须是常量表达式'的考生。看到数组定义先想'长度必须是常量表达式'。A缺长度直接报错;C用3.0浮点,编译时转成3但语法非法;D把类型放前面了,正确写法是int d[3]。只有B用字符常量'3',它本质是整型常量51,完全符合要求。
陷阱全在'看起来像数字就不是数字'——字符常量'3'被误认为'带引号的数字',其实它是整型常量;3.0看似合法但浮点不能作数组长度;D错在把类型和变量名顺序搞反,这是典型的语法偷换。只背结论不看本质,这类题必错。
命题人若把'3'换成变量x,或把3.0换成整数3,都能变成新题——考的是'常量表达式'vs'变量'与'浮点转整型'的边界。刷到类似题先问自己:这个长度到底是常量还是变量?