警告从默认启用的不兼容指针类型传递参数“ 1”

Emr*_*tan 3 c pointers function

randomAssign(int **grid, int size){

    int m = rand()%size;
    int n = rand()%size;
    grid[m][n] = 1;

}

int main()
{
    srand(time(NULL));
    int i, j, size;
    scanf("%d", &size);
    int grid[size][size];

    for(i=0; i<size; i++){
            for(j=0; j<size; j++){
                    grid[i][j] = 0;
            }
    }

randomAssign(grid,size); //warning

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我调用该函数时,我得到警告。我尽了我所能,但我找不到错误。错误在哪里?问候...

M.M*_*M.M 5

数组和指针是不同的。数组是一系列特定类型的连续元素。指针是一个小对象,其中包含另一个对象的地址。

您的函数需要一个指向另一个指针的指针。但是,您尝试为其提供数组。这可能行不通。

修复代码的一种方法是使函数接受指向数组的指针(而不是指向指针的指针)。可以这样写:

void randomAssign(int size, int grid[size][size])
Run Code Online (Sandbox Code Playgroud)

这实际上与hading相同int (*grid)[size],第一个size是多余的(请参见此处以了解详细信息),但是它具有一定的文档目的。