[英]Passing and returning 2D arrays in C
我根本没有用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);
第一个问题是当我为第二个和第三个参数传递零时,当我在函数中使用它们时它们不为零。 当使用mvaddch(a,b,'X')时,似乎a和b为1而不是0。我是否正确地向游戏数组中的元素分配了一个值?
将函数签名更改为不带*
:
void addMoveToBoard(int gameArray[3][3], int a, int b, int player)
现在只写:
gameArray[x][y] = player;
主要:
int board[3][3] = {{0,0,0},{0,0,0},{0,0,0}};
其余的都还可以。 重要的是要知道编译器会看到您使用数组并将其作为指向函数的指针传递。 该函数接收指向板阵列的指针,并且当您将其索引为[x][y]
时,编译器“知道该怎么办”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.