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

C++动态char数组调用topValue方法返回奇怪值问题求助

代码错误原因
  • 数组越界访问
    你申请的char数组长度为5,合法下标范围是0~4,但topValue方法中循环初始值设为了i = stackSize,你传入的stackSize是5,第一次循环就访问了stackArr[5],这是数组边界外的非法内存,读取到的是未定义的随机垃圾值,就是你遇到的²异常输出。
  • 函数缺少默认返回值
    如果数组内所有元素都是'\0',循环走完后函数没有返回任何值,同样会触发未定义行为。
修复方案

把循环初始值改为i = stackSize - 1,同时补充函数兜底返回值即可,修复后的topValue代码如下:

char topValue(char* stackArr, int stackSize)
{
    // 起始下标改为stackSize-1,避免越界
    for (int i = stackSize - 1; i >= 0; i--)
    {
        std::cout << "In top: " << stackArr[i] << std::endl;
        if (stackArr[i] != '\0')
        {
            return stackArr[i];
        }
    }
    // 兜底返回,避免无返回值的未定义行为
    return '\0';
}

修复后运行的返回结果就是你预期的最后一个非空字符l。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:36:03