c++ - 对数组排序后,为什么我看到的是地址而不是值?

标签 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

最佳答案

您对 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];
}

展望 future ,确保将编译器的警告级别调到最高。我很确定大多数编译器会检测到您的语句没有效果,这会让您找到问题的根本原因。

希望这对您有所帮助!

关于c++ - 对数组排序后,为什么我看到的是地址而不是值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878040/

相关文章:

c++ - 如何编译支持文本编解码器的 Qt 库 4.7.1?

C++ 常量 : how come the compiler doesn't give a warning/error

javascript - 如何在javascript数组中找到最重复的 "values"?

java - 循环检查字符串数组中的项目

python - 基于字典键值和字符串编号的列表排序

php - 评估存储在数组变量中的变量并根据评估值重新排序该数组?

c++ - 在 QTCreator .pro 文件中使用 QMAKE 链接标志顺序

c++ - C++11获取/释放VS顺序一致性?

php - 如何找到数组的第一个,第二个,第三个等数字

javascript项目拼接自己超出列表