我有以下功能
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)