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

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

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

此外,程序泄漏内存。我建议避免使用裸所属指针。

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

你没有在数组中插入值。不能在数组中插入值。数组中的元素个数是常量。

最新更新