新人渣渣,求大神勿喷,带我装逼带我飞.....
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
首先,你的前两行变量定义等价于:
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