这是我第一次来这里。我真的希望有人可以帮助我。所以这是我的问题。我一直在运行时错误#2关于腐败的“arr”。但程序运行良好,直到结束。我无法理解。
这是我的代码:
#include <iostream>
using namespace std;
void main(){
int arr1[3];
int temp;
//INPUT NUMBERS
for (int i=0; i<5;i++)
{
cin>>arr1[i];
}
cout<<endl;
//SORT
for(int c=0;c<5;c++)
{
for (int k=0;k<5;k++)
{
if(arr1[c]<arr1[k])
{
temp=arr1[k];
arr1[k]=arr1[c];
arr1[c]=temp;
}
}
}
for (int m=0; m<5; m++)
{
cout<<arr1[m]<<endl;
}
}
答案 0 :(得分:0)
试试这个:
#include <iostream>
using namespace std;
int main()
{
int arr1[5];
int temp;
//INPUT NUMBERS
for (int i = 0; i < 5; i++) {
cin >> arr1[i];
}
cout << endl;
//SORT
for (int c = 0; c < 5; c++) {
for (int k = 0; k < 5; k++) {
if (arr1[c] < arr1[k]) {
temp = arr1[k];
arr1[k] = arr1[c];
arr1[c] = temp;
}
}
}
for (int m = 0; m < 5; m++) {
cout << arr1[m] << endl;
}
}
它正确编译,没有任何错误。你犯的错误在于声明数组的大小。如果你想存储5个put,你需要声明一个大小为5的数组。你的代码可能会工作,但一个好的编译器总是会发出错误。
原因是当您声明一个数组时,实际上是创建了一个指向数组第一个元素的指针。然后,根据大小,为该阵列保留一些内存区域。如果您尝试访问这些内存区域之外的元素,则可能会遇到垃圾值。
Here是你的代码。