C++整数数组遍历异常:循环越界输出非法值求解决方案
解决C++数组遍历循环越界问题
你的代码核心问题是循环条件错误导致数组索引越界:
- 数组
arr包含5个元素,合法索引范围是0到4(数组索引从0开始) - 通过
sizeof(arr)/sizeof(arr[0])计算出的size值为5,当循环条件用i <= size时,i会取到5,此时访问arr[5]属于越界访问,会读取到内存中的随机垃圾值。
直接修改方案
把循环条件的<=改为<即可,修正后的完整代码:
#include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < size; i++) { std::cout << arr[i] << std::endl; } return 0; }
如果修改后仍有问题,检查是否重新编译了代码,或者是否在其他地方修改了数组/size的值。
更安全的现代C++写法
推荐使用范围for循环,无需手动计算数组长度,自动遍历所有元素,彻底避免索引越界问题:
#include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; for (int num : arr) { std::cout << num << std::endl; } return 0; }
内容的提问来源于stack exchange,提问作者moonmoon
相关产品推荐
相关产品推荐

