在 C++ 语言中,字符串是以 '\0' 结尾的字符数组。( )
这题考的是C风格字符串的底层存储机制。拿到题别急着想std::string,先回C语言定义:字符串就是'\0'结尾的字符数组。C++为了兼容C,底层依然沿用这规矩,所以题干描述完全正确。
最容易掉进'绝对化'的坑,觉得C++里字符串只能是std::string对象,忽略了C++里依然允许用字符数组定义字符串。命题人就是利用这种'概念迁移'误区,把C的知识点直接套到C++上,却忘了兼容性。如果你只背结论、不理解本质,就会误选B。另外还要分清'\0'(空字符,ASCII 0)和'0'(数字字符,ASCII 48)这两个长得像但完全不一样的东西,别被符号迷惑。
【考点】字符数组|字符串终止符|C风格字符串
GESP三级覆盖C++基础,本题落在'字符数组'与'字符串终止符'两个模块。命题人放这道题,就是卡住那些只背了'C++用std::string'而不知道C风格字符串仍然存在的考生。
解题思维:先回忆C语言中字符串的定义——以'\0'结尾的字符数组。C++为了兼容C,保留了这种用法,但C++也引入了std::string类,它底层仍用'\0'结尾的数组存储,但对外不提供直接操作字符数组的接口。题目中的表述只涉及底层存储,所以正确。
陷阱拆解:错误选项B的设计思路是'绝对化表述',让考生误以为C++中所有字符串都是std::string对象,忽略了C风格字符串的存在。命题人利用的是'概念迁移'误区,把C的知识点直接套用到C++上,却忘了兼容性。最阴险的细节是'字符串'一词的多义性:在C++教材中通常指std::string,但在底层实现上仍可能是字符数组。如果你只背结论、不理解本质,就会掉进这个陷阱。
反命题思维:如果把题目改成'在C++中,所有字符串都是std::string对象',答案就变成错误;或者改成'C++中字符串的存储方式与C语言相同',答案仍然是正确。刷到类似题时,先问自己'命题人想考我什么'。
考频与趋势:字符串相关考点在题库共考过99题,覆盖10个考试级别。逐年分布看,2008年4题、2011年2题、2012年2题、2014年2题、2015年2题、2016年2题、2017年1题、2018年2题、2019年2题、2020年1题、2021年2题、2022年1题、2023年11题、2024年10题、2025年32题、2026年19题、null年4题。分赛事看,GESP五级19题、GESP六级17题、NOIP普及组初赛14题、GESP三级14题、GESP四级10题、GESP七级8题、GESP八级6题、CSP入门级6题、NOIP提高组初赛3题、CSP提高级2题。可见GESP三级确实有14题涉及字符串,属于高频考点。
预测:从2023年11题、2024年10题到2025年32题再到2026年19题,字符串考点在近年波动较大,但GESP三级作为基础入门,依然会稳定考查C风格字符串与std::string的区别。命题人可能会继续用'绝对化表述'挖坑,或者结合输入输出函数(如cin/cout与scanf/printf)考查底层存储细节。暂无足够依据预测具体题型,但'概念迁移'类陷阱未来仍会高频出现。