c - 警告从默认启用的不兼容指针类型传递参数 1 of ""

标签 c function pointers

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;
}

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

最佳答案

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

您的函数需要一个指向另一个指针的指针。但是你试图向它提供一个数组。这不可能行得通。

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

void randomAssign(int size, int grid[size][size])

这实际上与 int (*grid)[size] 相同,第一个 size 是多余的 (see here for detail),但它用于某些记录目的。

关于c - 警告从默认启用的不兼容指针类型传递参数 1 of "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225607/

相关文章:

javascript - 使用 Map + Rest 运算符 (JavaScript)

javascript - JavaScript 中是否有任何方法可以使用字符串格式的名称来调用在另一个函数范围内声明的函数?

c - 为什么这个二维指针表示法有效而另一个无效

c - x = (char *)&a 的作用是什么,它有什么作用?

c++ - 微小的崩溃程序

c - 按值返回结构每次都会给出相同的错误答案

c++ - MPI 是否提供预处理器宏?

c++ - C 堆栈跟踪中缺少函数调用

c 显示图的邻接表

c++ - 为什么函数参数在调用堆栈上比返回地址更早推送?