假设我在 main 函数中创建了一个二维数组:
int board[8][8] = {0};
当我在 MAIN 中使用简单的 FOR 循环将其打印到控制台时,一切正常,并且控制台显示所有元素已设置为 0。
但是,当我尝试将此数组作为参数传递给打印函数(如下所示)时,某些元素被正确设置为 0,而其余元素则变为随机值:
void print_board (int (*array)[8][8]);
int main (){
int board[8][8] = {0};
print_board(&board);
return 0;
}
void print_board (int (*array)[8][8]){
for (int i = 0; i < 8; i++){
for (int j = 0; j < 8; j++){
cout << *array[i][j] << " ";
}
cout << endl;
}
}
我使用了指针和&符号,并尝试用谷歌搜索,但我猜我错过了一些东西。
非常感谢您的帮助!
最佳答案
根据Operator Precedence ,operator[]
的优先级高于operator*
。因此 *array[i][j]
相当于 *(array[i][j])
。并且 array
是一个指针(指向数组),当 i >= 1
时,array[i]
可能会导致 UB。
你应该将其更改为
cout << (*array)[i][j] << " ";
关于c++ - 当将二维数组打印到控制台时,值被随机设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181167/