传递2d数组时发出警告

Ham*_*aya 1 c arrays pointers

我有以下功能

void initBoard(int * board[BOARD_ROWS][BOARD_COLS]){
  int z = 0;
  for( z = 0; z<10; z+=1){
     int l;
     for( l = 0; l<10; l+=1){
        board[z][l] = 0;
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

从主要我称之为

  int plBoard[10][10];
  initBoard(&pcBoard);
Run Code Online (Sandbox Code Playgroud)

编译时它工作,但我得到一个警告说:警告:从不兼容的指针类型传递'initBoard'的参数1.array是一个整数,函数需要一个int指针,我传递的是int的地址.这有什么问题?

pax*_*blo 12

除了问题中明显的拼写错误(定义plBoard但使用pcBoard)之外,您不需要使用address-of运算符(&)传递数组,因为它们会自动转换为地址.

但是你的incompatible type问题是由于使用:

int * board[BOARD_COLS][BOARD_ROWS]
Run Code Online (Sandbox Code Playgroud)

这实际上是一个2d int 指针数组(技术上是一个指针数组的数组int),而不是你期望的整数.

你应该使用:

void initBoard(int board[BOARD_COLS][BOARD_ROWS]) {  // <-- remove "*"
: : :
}
int plBoard[10][10];
initBoard(plBoard);                                  // <-- remove "&"
Run Code Online (Sandbox Code Playgroud)