c++ char array returns 一些奇怪的值

c++ char array returns some strange value

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

    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] != '[=12=]')
        {
            return stackArr[i];
        }
    }
} 

在循环的第一次迭代中,您在其边界之外访问数组,程序的行为未定义。

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

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

After inserting values in dynamic char array ...

您没有将值插入数组。无法将值插入数组。数组中元素的个数是常数。