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/