首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中传递数组

在C++中传递数组
EN

Stack Overflow用户
提问于 2014-10-21 05:51:20
回答 2查看 65关注 0票数 0

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

代码语言:javascript
复制
#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;

}

我得到的是

代码语言:javascript
复制
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);

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

EN

回答 2

Stack Overflow用户

发布于 2014-10-21 05:54:04

这里发生了很多事情:

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

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

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

在不做太多更改的情况下:

代码语言:javascript
复制
#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;
}
票数 1
EN

Stack Overflow用户

发布于 2014-10-21 06:01:26

我将继续回答你的问题,我会让你自己解决剩下的问题。

您的函数签名是 int * arr( int * arr),这意味着它期望一个指向一个整数的指针,并将返回一个指向一个整数的指针。

但是,您向它传递的是arri,这是一个整数,而不是指向整数的指针。

试试&arri

编码愉快!:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26475527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档