排序数组后,为什么我会看到地址而不是值?

时间:2014-09-16 20:40:36

标签: c++ arrays sorting

我的代码中有一个小问题。我正在尝试计算输入中的最大数字,我想通过使用std::sort()来尝试它。现在我有这个代码,它输出最大数字的地址而不是最大数字本身的地址:

#include<bits/stdc++.h>
using namespace std;

int main(){

    int arr[3];
    for(int i=0;i<3;++i){
        int x;  
        cin >> x;
        arr[x]; 
    }
    sort(arr, arr + 3, greater<int>());

    cout << arr[0] << endl;
}

我在这里做错了什么?我是否错误地呼叫sort

1 个答案:

答案 0 :(得分:1)

您对sort的调用是正确的,但您的数组初始化不正确。你在写

for(int i=0;i<3;++i){
    int x;  
    cin>>x;
    arr[x]; 
}

最后一句话arr[x];无效。你所翻译的地址是一个垃圾值,恰好恰好位于数组的第一个位置。

我认为你打算写

arr[i] = x;

一旦你这样做,一切都应该开始工作。

更好的是,试着写下这个:

for(int i=0;i<3;++i){
    cin >> arr[i];
}

继续前进,确保将编译器的警告级别调高到最大值。我很确定大多数编译器会检测到你的语句没有效果,这会让你知道问题的根本原因。

希望这有帮助!