gpt4 book ai didi

c - 为什么我的主板会出现这样的困惑?

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

电路板在第一个电路板中打印正确,但在它全部打乱之后。板上充满了数字只是为了调试。

int **allocMem(int nrows, int ncolumns){

int **board = malloc( (nrows + 1) * sizeof(int *));
for(int i = 0; i < nrows; i++)
board[i] = malloc( (ncolumns + 1) * sizeof(int));

if (board == NULL) {
printf("\t\nERROR::memory allocation\n\n" );
free(board);
return 0 ;
}

return board;
}

这是分配,然后是董事会

void makeBoard(int **board, int nrows, int ncolumns){
int i = 0;
printf("board being created \n");
for(int lines = 0; lines < nrows + 1; lines++){
for(int columns = 0; columns < ncolumns + 1; columns++){
(*board + lines)[columns] = i++;
printf("| %d ", (*board + lines)[columns] );
}
printf("| \n" );
}
printf("board after being created \n");
for(int lines = 0; lines < nrows + 1; lines++){
for(int columns = 0; columns < ncolumns + 1; columns++) {
printf("| %d ", (*board + lines)[columns] );
}
printf("| \n" );
}
}

这是输出

enter image description here

最佳答案

(*board +lines)[columns] 应该是 (*(board +lines))[columns] 因为 * 具有更高的值优先于+。或者您可以简单地编写board[lines][columns],这使得板的二维性质变得清晰。

一般来说,当x是指针时,x[y]等价于*(x+y)

关于c - 为什么我的主板会出现这样的困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472231/

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