gpt4 book ai didi

c++ - 在我的数组中获取内存地址?

转载 作者:太空狗 更新时间:2023-10-29 20:06:54 25 4
gpt4 key购买 nike

我正在编写一个 C++ 应用程序,让用户输入 0(零)或一(1)作为输入,然后将数字存储为数组并对它们进行排序,使零在前,一在后.

但是,我认为我在数组中获取的内存地址扰乱了排序操作。

接受输入的函数如下所示:

cout << "Please enter number " << i+1 << ":\n";
cin >> ar[i];

然后有一个调用的函数对输入进行排序并显示排序后的列表:

sort_elements(ar, number);

... 这个函数看起来像这样:

void sort_elements(int ar[], long int num_elements) {
int temp_num;
num_elements -= 1; //since the array starts at 0

cout << "num_elements is " << num_elements << "\n";
for (int i=0; i < (num_elements/2); i++ ) {
if (ar[i] > ar[num_elements-i]) {
temp_num = ar[i];
ar[i] = ar[num_elements-i];
ar[num_elements-i] = temp_num;
}
}
cout << "Here's your neatly sorted list of numbers: \n";
for (int j=0; j <= num_elements; j++) {
cout << ar[j] << ", ";
}
cout << "\n";
}

对于五个数字的输入,以三个“1”开始,以两个“0”结束,这会产生如下所示的输出:

1, 0, 1, 1, 1892218304, 

我假设 1892218304 是一个内存地址,这会弄乱输入。虽然我真的不知道。

谁能弄清楚为什么我的排序操作会变得一团糟?

提前致谢。

最佳答案

建议在标准库中使用 vector 和排序

#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>

int main()
{
std::vector<int> v;
for(int i=0; i < 10; i++)
{
v.push_back(i);
}

std::sort(v.begin(), v.end());

return 0;
}

关于c++ - 在我的数组中获取内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com