我没有用C编码,所以我对2D数组的指针有困难。我有一个整数类型的2D数组3x3。
这是我尝试使用的方法:
void addMoveToBoard(int *gameArray[3][3], int a, int b, int player) {
*((int *)gameArray + x * 3 + y) = player;
if (a == 0) {
mvaddch(a, b, 'X');
}
...
}
这是我的主要内容:
int *board[3][3] = {{0,0,0},{0,0,0},{0,0,0}};
addMoveToBoard(board, 0, 0, 1);
第一个问题是当我为第二个和第三个参数传递零时,当我在函数中使用它们时它们不是0。当使用mvaddch(a,b,'X')时,它看起来好像a和b是1而不是0.我是否正确地为游戏数组中的元素赋值?
答案 0 :(得分:2)
将您的功能签名更改为b
:
a
现在只写:
*
并在主要:
void addMoveToBoard(int gameArray[3][3], int a, int b, int player)
其余的都没问题。重要的是要知道编译器会看到您使用数组并将其作为指向函数的指针传递。当您将其编入gameArray[x][y] = player;
时,该函数接收指向板阵列的指针,编译器“知道该做什么”。