首页 > 解决方案 > c++ char数组返回一些奇怪的值

问题描述

在动态 char 数组中插入值后,尝试从顶部获取第一个值。方法给了我²的价值。你能帮助我理解我做错了什么吗?这是主要方法:

    char* arr = new char[5]();
    arr[0] = 'h';
    arr[1] = 'e';
    arr[2] = 'l';
    arr[3] = 'l';
    char result = topValue(arr, 5);
    cout << result;

这是topValue()方法:

char topValue(char* stackArr, int stackSize)
{
    for (int i = stackSize; i >= 0; i--)
    {
        std::cout << "In top: " << stackArr[i] << std::endl;
        if (stackArr[i] != '\0')
        {
            return stackArr[i];
        }
    }
} 

标签: c++chardynamic-arrays

解决方案


在循环的第一次迭代中,您访问了超出其边界的数组,并且程序的行为是未定义的。

请注意,您的函数不处理所有元素都是空终止符的潜在情况。在这种情况下,函数将在没有返回值的情况下结束,并且程序的行为将是未定义的。要么处理这种情况,要么仔细记录函数的先决条件。

此外,该程序会泄漏内存。我建议避免使用裸拥有指针。

在动态字符数组中插入值后...

您没有将值插入数组。无法将值插入数组。数组中元素的数量是恒定的。


推荐阅读