为什么我的电路板全都乱成一堆?

时间:2016-05-26 22:44:00

标签: c

电路板在第一个电路板内正确打印,但是在它全部被打乱之后。董事会充满了数字只是因为调试。

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" );
  }
}

这是输出

enter image description here

1 个答案:

答案 0 :(得分:0)

(*board + lines)[collums]应为(*(board + lines))[collums],因为*的优先级高于+。或者您可以简单地编写board[lines][collums],这样可以清楚地了解电路板的二维特性。

通常,当x是指针时,x[y]相当于*(x+y)