GESP 三级 · GESP 202312 C++ 三级 第 1 题

选择题 · 答案 C

← 整套速查表 GESP 三级 全部真题

题目

下面 C++ 数组的定义中,会丢失数据的是

答案:C

解题思维

这道题考数组初始化时元素个数与数据长度的匹配问题。拿到题先看数组定义里有多少个元素,再想每个元素能装多大,若数据比数组长,多出的部分就会直接丢失。

常见错误

学生容易把字符串字面量当成单个字符处理,以为'chen'就是一个元素,其实它在C++里是5个字节(含结束符),而数组只给了3个位置,编译器会按前3个字节截断,后面的'n'和''直接丢掉。另外也会误以为char数组能存整个单词,忽略底层是按字节对齐的。

详细解析(节选)

1. 考点与概念

GESP三级必考的“数组初始化”核心就是:数组长度由初始化列表中的元素个数决定,而每个元素能容纳的数据大小取决于其类型。若初始化数据长度超过数组容量,超出的部分会被直接丢弃,不会报错,只会在运行时导致逻辑错误。

2. 命题视角

命题人专挖“字符串字面量隐式截断”:学生常以为{'chen'}是把整个单词塞进数组,实则char数组只按元素个数定长,多出的字节直接被丢弃。其他选项A/B/D全是原子类型,单值进数组无截断。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断