gpt4 book ai didi

C++ 数组排序,内存错误?

转载 作者:行者123 更新时间:2023-11-30 04:16:18 25 4
gpt4 key购买 nike

我正在学习 C++ 编程,但在使用基本数组排序程序时遇到了问题。我的代码似乎没有抛出任何编译器错误——VisualStudio2012 没有显示任何错误。此外,它看起来与我在教程 (learncpp.com) 中找到的代码完全一样。

输出应该在其选择排序的每一步显示一个数组。但是,我不断得到随机字母和数字的不同输出。这是内存问题吗?还是别的?

此外,注释掉的“if”循环是我如何在 1 行而不是 2 行代码中交换数组元素的方式。这对排序有用吗?

#include "stdafx.h"
#include <iostream>
#include <algorithm>

int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;

const int nSize = 6;
int anArray[nSize] = {30, 60, 20, 50, 40, 10};

for (int nStartIndex = 0; nStartIndex < nSize; nStartIndex++){
int nSmallestIndex = nStartIndex;

for (int nCurrentIndex = nSmallestIndex + 1; nCurrentIndex < nSize; nCurrentIndex++){


/* if (anArray[nCurrentIndex] < anArray[nSmallestIndex])
swap(anArray[nSmallestIndex], anArray[nCurrentIndex]);
*/

if (anArray[nCurrentIndex] < anArray[nSmallestIndex])
nSmallestIndex = nCurrentIndex;
}

swap(anArray[nStartIndex], anArray[nSmallestIndex]);

cout << "The current array: \t" << anArray << "\n";

}

return 0;

最佳答案

你显示的是内存地址,比如0x23abcd。您实际上是在显示指向数组中第一个元素的指针。要在 C++11 中正确显示数组,最好的方法是使用 range-for 循环:

for(int &i : anArray)
std::cout << i << " ";

关于C++ 数组排序,内存错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815383/

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