gpt4 book ai didi

c - 使用函数中的数组填充数组

转载 作者:行者123 更新时间:2023-11-30 17:26:57 26 4
gpt4 key购买 nike

我正在尝试使用从 main 传递的值在函数 drawInitialNim() 中填充二维数组。

int drawInitialBoard(int x, int y, int z);

int main(int argc, const char * argv[]) {

int board[3][50] = {{0}};
int row1, row2, row3;
int i, j;

row1 = 0;
row2 = 0;
row3 = 0;

printf("Enter the number of rocks in each row: ");
scanf("%d %d %d", &row1, &row2, &row3); //values for amount of "O" in the array
printf("this is row 1: %d\n", row1); //debug
board[2][49] = drawInitialBoard(row1, row2, row3); //fill array from function

printf("this is 0,0 in main: %d\n",board[0][0]); // debug

for (i=0; i<3; i++) { //print indexes that contain "O" or 79
printf("Row %d: ", i+1);
for (j=0; j<50; j++) {
if (board[i][j] != 0) {
printf("%c", board[i][j]);
}
}
printf("\n");
}
}

int drawInitialBoard(int x, int y, int z)
{
int i,j,k;
static int arr[3][50] = {{0}};

for (i=0; i<x; i++) { //fill board with "O", or its that equal 79
arr[0][i] = 'O';
}
for (j=0; j<y; j++) {
arr[1][j] = 'O';
}
for (k=0; k<z; k++) {
arr[2][k] = 'O';
}
printf("This is 0,0 in the function: %d\n", arr[0][0]); //debug
return **arr;
}

我使用 1, 2, 3 作为 main 中 x, y, z 的输入得到此输出:第 1 行:第 2 行:第 3 行:O

我觉得来自drawInitialNim()的值没有正确传递给main。我知道数组不能返回,所以我返回了指针。此外,我不认为这是一个取消引用问题。我不知道如何解决这个问题。

如有任何帮助,我们将不胜感激!

最佳答案

我在你的程序中看到的第一件事是错误的:您可以定义类似 int drawInitialBoard(int x, int y, int z); 的函数,这意味着它将返回一个 int 但您返回的是 **到达。现在根据我所知,*表示“地址处的值”,因此*arr表示指针arr地址处的值。由于 arr 是一个数组,因此它是指向其第一个元素的指针。所以我认为当您使用 return **arr 时,那里有问题。由于数组中的第一个元素不是指针,所以我认为 **arr 可能不会给你带来你想要的东西。

关于c - 使用函数中的数组填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com