从int *到int的无效转换[-fpermissive]

时间:2014-03-03 09:13:42

标签: c++ arrays bubble-sort

我正在尝试使用bubblesort对多维数组进行排序。当我尝试将数组提交到我的bubblesort函数时,我得到了几个错误:

   bubblesort(lottozahlen[12] [6], k);
void bubblesort(int *array [12] [6], int length)
{
    int i, j, k;
    for (k=0; k<12; k++)
    {

        for (i = 0; i < length -1; ++i)
        {

            for (j = 0; j < length - i - 1; ++j)
            {
                if (array [k] [j] > array [k] [j + 1])
                {
                    int tmp = array[k] [j];
                    array[k] [j] = array[k] [j + 1];
                    array [k] [j + 1] = tmp;
                }
            }
        }
    }
}

错误是:

[Error] invalid conversion from 'int*' to 'int' [-fpermissive] 
[Error] invalid conversion from 'int' to 'int*' [-fpermissive] 
[Error] invalid conversion from 'int' to 'int* (*)[6]' [-fpermissive] 
[Error]   initializing argument 1 of 'void bubblesort(int* (*)[6], int)' [-fpermissive] 

提前谢谢!

1 个答案:

答案 0 :(得分:1)

假设lottozahlen被声明为int lottozahlen[12][6]

void bubblesort(int *array [12] [6], int length)

这里array参数被声明为指针数组的数组。不是你想要的。

bubblesort(lottozahlen[12] [6], k);

在这里,您使用位于bubblesort的数组元素作为第一个参数调用(12, 6)。不想要你也想要。

应该是:

bubblesort(lottozahlen, k);
void bubblesort(int array [12] [6], int length)