数组下标和其他类型的类型`int [int]'无效

时间:2014-04-15 03:18:13

标签: c++ arrays

我一直在犯的错误是:

无效类型int[int]' for array subscript invalid conversion from int'到int*' initializing argument 1 of void slideLeft

我声明了变量,boardSize在while循环之前的int main()中等于0。

以下是您要查看的一些代码:

void slideLeft(int board[], int i, int rowBeginIndex)
{
    while((board[i - 1] == 0) && (i > rowBeginIndex)) 
    {
        board[i - 1] = board[i];
        board[i] = 0;
        i--;
    }
}
int main()中的

while(GetInput(direction) != 0)
{
    cout << "Your move: \n\n";
    cin >> direction;

    if(direction == 'a')
    {
         for(row=0; row<RowSize; row++)
         {
              for(col=0; col<RowSize; col++)
              {
                   current = row*RowSize + col;
                   if(boardSize[current] != 0) 
                   {
                       slideLeft(boardSize, current, row*RowSize);
                   }
              }
         }
    }

2 个答案:

答案 0 :(得分:2)

类型不匹配来自于boardSize只是一个整数(如你所说设置为0)这一事实,但你的slideLeft函数试图处理一个数组。通过董事会本身,而不是大小。

答案 1 :(得分:0)

void slideLeft(int board [],int i,int rowBeginIndex) - 这种类型的声明在C ++中不起作用。如果你有一个int数组,那么将它作为函数参数的最佳方法是将它作为int *。此外,您需要传递数组的大小,以便您的函数不会覆盖不属于它的数据。简而言之,这就是你的功能应该是什么样的:

void slideLeft(int *board, int boardSize, int i, int rowBeginIndex);

可能会出现一个问题,您如何将数组传递给此函数。这是你如何做到的:

int array[10];
slideLeft(&array, sizeof(array)/sizeof(int), i, rowBeginIndex);

如果按照我上面的方式声明数组,那么要获取数组中元素的数量,可以将数组的完整大小除以数组类型为(int)的元素的大小。

希望这有帮助。