簡體   English   中英

了解一段C代碼背后的邏輯

[英]Understanding the logic behind a piece of C code

如果您能向我解釋一下,為什么下面的遞歸代碼段不顯示“ test”一詞,我很樂意。 提前致謝。

void drawTetriminosEachPosition(int **tetriminos, char **dBoard, int **tBoard, int i){
  char c;
  char **dBoard2;

  if(tetriminos[i] == '\0')
  {
      return;
  }    
  else
  {
     dBoard2 = dBoard;
     DrawTetrimino(tBoard, tetriminos[i], dBoard, i+65);
  }
  i++;
  return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));

  ft_putstr("test");
  if(checkChar(tBoard,tetriminos[i]))
  {
      dBoard = dBoard2;
      return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
  }     
}

返回后的語句永遠不會執行。 自第一次

return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));

不依賴於任何條件,因此不會執行以下代碼。

當控制權到達return ...它只是返回而不會執行下一行。 也許您錯過了兩者之間的某些邏輯?

截至目前,您可以刪除此部分,沒關系

ft_putstr("test");
  if(checkChar(tBoard,tetriminos[i]))
  {
      dBoard = dBoard2;
      return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
  }  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM