25 条题解
-
0
- 如果字符串定义为
char str[] = "Hello";,则字符数组 str 的长度为( )。 ○ A. 0 ○ B. 5 ○ C. 6 ○ D. 7
答案是 C. 6。
来,作为教练,我带你用“显微镜”看看这个字符串在内存里到底长什么样。这道题是经典的 “隐形尾巴” 陷阱。
1. 肉眼看到的部分
你第一眼看到
"Hello",于是你开始数手指头:'H''e''l''l''o'一共 5 个字母。 很多人看到这里就想选 B,那就掉进坑里了!
2. 计算机看到的真相
在 C/C++ 语言中,双引号括起来的字符串字面量(String Literal),编译器会自动在屁股后面免费赠送一个结束标志:
\0(空字符)。 如果没有这个标志,计算机读字符串的时候就会停不下来,一直读到乱码为止。所以,数组
str在内存里的真实布局是这样的:下标 0 1 2 3 4 5 字符 'H' 'e' 'l' 'o' '\0' 3. 最终清算
- 看得见的字母:5 个
- 看不见的隐形保镖(
\0):1 个 - 数组总长度 = 5 + 1 = 6
教练的口诀
“双引号里数一数,最后别忘加个 0。”
- 如果字符串定义为
信息
- ID
- 4769
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者