开发者社区 问答 正文

为什么输出的是hellohello

screenshot
新人渣渣,求大神勿喷,带我装逼带我飞.....

展开
收起
a123456678 2016-03-23 13:50:21 1943 分享 版权
1 条回答
写回答
取消 提交回答
  • 首先,你的前两行变量定义等价于:

    char a[6] = {'h', 'e', 'l', 'l', 'o', 0};
    char b[5] = {0, 0, 0, 0, 0}

    注意 a 实际有 6 个元素,且最后一个是 0.

    在内存中,这两个变量实际是连续存储的:

    0, 0, 0, 0, 0, 'h', 'e', 'l', 'l', 'o', 0

    也就是 b 在前,a 在后。

    当你执行循环后,这一段内容变为:

     'h', 'e', 'l', 'l', 'o', 'h', 'e', 'l', 'l', 'o', 0

    在执行输出时,printf 寻找b之后的第一个 0 作为结尾,也就 printf 是从前面的 h 到最后的 0 之前一个文字全部输出,因此结果是

    hellohello
    2019-07-17 19:10:50
    赞同 展开评论
问答地址: