c++ - 在 C++ 中传递数组

标签 c++ arrays pointers

我是 C++ 的新手,我想做的是将 insertion_sort 函数的输出传递给主函数。这是我的代码

#include "include.h"

using namespace std;

int main()
{
    int arr[10] = {12,9,32,1,0,5,13,7,4,2};


    for (int i = 0; i < 10 ; ++i)
    {
        cout << insertion_sort(arr[i]) << endl;
    }
    return EXIT_SUCCESS; 
}

int* insertion_sort(int* arr){
    int key, temp =0;

    for (int i = 0; i < 10; ++i)
    {
        key = i+1;
        while(key >= 0){
            if (arr[key] < arr[key -1])
            {
                temp = arr[key -1];
                arr[key -1] = arr[key];
                arr[key] = temp;
            }
            key--;

        }
    }
    return arr;

}

我得到的是

candidate function not viable: no known conversion from 'int' to 'int *' for 1st argument; take the
      address of the argument with &
int* insertion_sort(int* arr);

插入排序算法在这里并不重要。我只是不明白为什么没有将数组指针传递给函数。

最佳答案

这里发生了很多事情:

arr[i] 是一个整数(int 类型)。 您应该传递类型为 int* 的 arr。

您的 insertion_sort 函数似乎正在适本地修改输入数组,因此您不需要返回值。

此外,您不应调用插入排序 10 次。 调用 insertion_sort,然后使用 for 循环打印排序后的数组。

没有太多改变:

#include <iostream>

using namespace std;

void insertion_sort(int* arr){
    int key, temp =0;

    for (int i = 0; i < 10; ++i)
    {
        key = i+1;
        while(key >= 0){
            if (arr[key] < arr[key -1])
            {
                temp = arr[key -1];
                arr[key -1] = arr[key];
                arr[key] = temp;
            }
            key--;

        }
    }

}

int main()
{
    int arr[10] = {12,9,32,1,0,5,13,7,4,2};

    insertion_sort(arr);

    for (int i = 0; i < 10 ; i++)
    {
        cout << arr[i] << endl;
    }
    return 0;
}

关于c++ - 在 C++ 中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475527/

相关文章:

c++ - 如何在 QStackedLayout 中居中小部件?

c++ - 理解 C++ 字符串

java - 如何创建 char 类型的整数数组?

c++ - Pointer-to- "inner struct"成员是否被禁止?

c - 从指针数组中查找重复项

c++ - 多态QSharedPointer

c++ - 为什么它需要它!=obj.end() 尽管每个迭代器都应该知道自己何时终止?

arrays - 我们在空间复杂度中考虑二维数组指针的大小是多少?

arrays - 无法聚合数组

c - 您不需要取消引用指针来对寄存器进行按位操作吗?