c++ - 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];
}
}
}
解决方案
在循环的第一次迭代中,您访问了超出其边界的数组,并且程序的行为是未定义的。
请注意,您的函数不处理所有元素都是空终止符的潜在情况。在这种情况下,函数将在没有返回值的情况下结束,并且程序的行为将是未定义的。要么处理这种情况,要么仔细记录函数的先决条件。
此外,该程序会泄漏内存。我建议避免使用裸拥有指针。
在动态字符数组中插入值后...
您没有将值插入数组。无法将值插入数组。数组中元素的数量是恒定的。
推荐阅读
- java - Gradle Junit 5 - 使用 jar 进行测试
- c - 由于警告 C6031(“忽略返回值:'scanf'),Visual Studios 不会编译代码
- python - if 表达式来查找文本是否在 DictReader 键的字段中
- django - 我想过滤 def 'getAmountRating(self):' 函数
- python - SLURM Python脚本在循环中累积内存
- pandas - 列表的数据框到 multiIndex 数据框
- c++ - 将 Google 基准与 cmake 关联
- python - Discord py 获取消息
- r - 如何按变量汇总保留名称
- c++ - 使用访问者时提升变体转换错误