数组下标和其他无效类型"int[int]"

Invalid types `int[int]' for array subscript and others

本文关键字:int 类型 无效 下标 其他 数组      更新时间:2023-10-16

我一直得到的错误是:

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

在while循环之前,我在int main()中声明了变量boardSize等于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: nn";
    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);
                   }
              }
         }
    }

类型不匹配的原因是boardSize只是一个整数(如您所说设置为0),但您的slideLeft函数正试图处理一个数组。把木板本身传进去,而不是大小。

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)的元素的大小。

希望这能有所帮助。