次のコードを作成して、ボードの値がnew_boardになり、その逆になるようにします。それらは両方ともポインタなので、私はそれらが指すアドレスを入れ替えることができると思いました。print2()で印刷すると、アドレスが適切に交換されます。しかし、print1()で印刷すると、アドレスがどういうわけかスワップバックされてしまい、意味がありません。さらに、print2()でボードの値を出力すると、それらも正しいです。
main(){
char *new_board = (char *)malloc(sizeof(char) * rows * cols );
char *board = (char *)malloc(sizeof(char) * rows * cols );
update_board2(board, new_board, rows, cols);
print1();
}
void update_board2(char *board, char *new_board, int rows, int cols){
//do a bunch of stuff
char *temp = board;
board = new_board;
new_board = temp;
print2();
}