You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何第二个循环无法像第一个循环一样打印数组hello?

问题原因分析

核心问题是数组越界访问导致变量被意外覆盖:

  • 字符串"hello"的长度为5,你定义的count数组大小是strlen(s)-1,也就是4,它的有效索引范围是0~3。
  • 第一个for循环执行到i=4(对应字符'o')时,执行了count[i] = plus;,这属于越界访问count数组的内存空间。
  • 从程序的内存布局来看,count数组之后紧接着的变量就是k,这次越界赋值直接把k的初始值0覆盖成了4。
  • 第二个for循环的条件是k < a(a=5),此时k一开始就是4,循环只会执行一次(打印s[4]即'o'),之后k自增为5,不再满足循环条件,直接退出。

你可以通过把count数组的大小改为a(也就是5)来验证这个结论,修改后第二个循环就能正常打印hello了。

内容的提问来源于stack exchange,提问作者JOHN BOURAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:10:01