【发布时间】:2016-05-27 10:24:59
【问题描述】:
我的程序必须对另一个数组中的一个数组进行排序。 当我运行程序时,它会打印 1 2 3 -858993460 5 -858993460 7。 我不明白代码中的错误在哪里。
#include <iostream>
using namespace std;
int main()
{
const int N = 7;
int arr[N] = { 3, 17, 2, 9, 1, 5, 7 };
int max = arr[0];
for (int i = 1; i < N; i++)
{
if (max < arr[i])
max = arr[i];
}
int sort_arr[N];
for (int j = 0; j < N; j++)
{
sort_arr[arr[j] - 1] = arr[j];
}
for (int i = 0; i < N; i++)
{
cout << sort_arr[i] << " ";
}
return 0;
}
【问题讨论】:
-
你到底想用这条线做什么:
sort_arr[arr[j] - 1] = arr[j];? -
当
J为1 时,此表达式arr[j] - 1的计算结果为17-1,这超出了数组arr的范围 -
sort_arr[arr[j] - 1]正在超出数组的范围。 (当j是1,那么arr[j]是17和arr[j] - 1是16...你在哪里对数组进行排序? -
-858993460 是十六进制 CCCCCCCC,常用于未初始化内存的调试版本。其他 cmets 已经指出这是由于内存访问越界造成的。
标签: c++ arrays sorting copying unordered