25 条题解

  • 0
    @ 2025-11-23 20:53:47
    1. 如果字符串定义为 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
    上传者