2015-10-19 74 views
3
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; 
} 

當我調用函數時出現警告。我盡我所能,但我找不到錯誤。錯誤在哪裏?問候...從默認啓用不兼容指針類型的警告傳遞參數1的參數

回答

4

數組和指針是不同的。數組是一系列特定類型的連續元素。指針是保存另一個對象地址的小對象。

你的函數需要一個指向另一個指針的指針。但是你試圖向它提供一個數組。這不可能工作。

修復代碼的一種方法是讓函數接受指向數組的指針(而不是指向指針的指針)。這可以寫成:

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

這實際上是等於擁有int (*grid)[size],第一size是多餘的(see here for detail),但是它提供了一些紀錄片的目的。

相關問題