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 ...
您没有将值插入数组。无法将值插入数组。数组中元素的个数是常数。
在动态字符数组中插入值后,试图从顶部获取第一个值。方法返回 ² 值。 你能帮助我理解我做错了什么吗?这是主要方法:
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 ...
您没有将值插入数组。无法将值插入数组。数组中元素的个数是常数。