下面 C++ 数组的定义中,会丢失数据的是
这道题考数组初始化时元素个数与数据长度的匹配问题。拿到题先看数组定义里有多少个元素,再想每个元素能装多大,若数据比数组长,多出的部分就会直接丢失。
学生容易把字符串字面量当成单个字符处理,以为'chen'就是一个元素,其实它在C++里是5个字节(含结束符),而数组只给了3个位置,编译器会按前3个字节截断,后面的'n'和''直接丢掉。另外也会误以为char数组能存整个单词,忽略底层是按字节对齐的。
GESP三级必考的“数组初始化”核心就是:数组长度由初始化列表中的元素个数决定,而每个元素能容纳的数据大小取决于其类型。若初始化数据长度超过数组容量,超出的部分会被直接丢弃,不会报错,只会在运行时导致逻辑错误。
命题人专挖“字符串字面量隐式截断”:学生常以为{'chen'}是把整个单词塞进数组,实则char数组只按元素个数定长,多出的字节直接被丢弃。其他选项A/B/D全是原子类型,单值进数组无截断。