电路板在第一个电路板内正确打印,但是在它全部被打乱之后。董事会充满了数字只是因为调试。
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 collums = 0; collums < ncolumns + 1; collums++){
(*board + lines)[collums] = i++;
printf("| %d ", (*board + lines)[collums] );
}
printf("| \n" );
}
printf("board after being created \n");
for(int lines = 0; lines < nrows + 1; lines++){
for(int collums = 0; collums < ncolumns + 1; collums++){
printf("| %d ", (*board + lines)[collums] );
}
printf("| \n" );
}
}
这是输出
答案 0 :(得分:0)
(*board + lines)[collums]
应为(*(board + lines))[collums]
,因为*
的优先级高于+
。或者您可以简单地编写board[lines][collums]
,这样可以清楚地了解电路板的二维特性。
通常,当x
是指针时,x[y]
相当于*(x+y)
。