我想传递一个数组来运行我的引用和返回数组

时间:2017-03-29 21:48:25

标签: pointers visual-studio-2012 reference

我为一个对数组进行排序的函数编写了代码,然后我可以在主文件中访问它。

我面临的问题是我无法理解如何传递数组并对数组进行排序。

初始化功能。

void sort (int *ary[], int len);

主要功能

int main ()
{
    int max [4]= {2,8,5,9};
    sort(&max, 4);
     for (int l =0; l<4;l++)
     {
         cout<< max[l]<< " "<< endl;
     }
    system("pause");
    return 0;
}

函数,它将通过冒泡排序对数组进行排序。

void sort (int *ary[], int len )
{
    int temp=0;
    for (int i = 0; i<len; i ++)
    {
        for (int j= 0 ; j<len ;j++)
        {
            if (ary[j]> ary[j+1])
            {
                temp = ary[j];
                ary[j] = ary[j+1];
                ary[j+1]= temp;
            }
        }
    }
}

我收到以下错误消息:

  

visual studio 2012 \ projects \ problem2 \ problem2 \ pract.cpp(11):错误   C2664:&#39;排序&#39; :无法从&#39; int [4]&#39;转换参数1到&#39; int * []&#39;

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

int *ary[]表示指针数组。您可以编写int ary[]来获取数组:

void sort(int ary[], int len);

由于它是一个函数参数,int ary[]表示与int* ary相同,因此上述内容相当于:

void sort(int* ary, int len);

最后,像这样称呼它(因为array-to-pointer decay):

sort(max, 4);