看板 C_and_CPP 關於我們 聯絡資訊
考慮少一點 char aa[] = "ABC"; 的情況 call main() ┌────────┐ │main() │ │{ │ │ reverse(); │ │ │ │ │ └────────┘ call reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ reverse(); │ │ │ └───────────────────┘ call reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B' │ reverse(); │ │ │ └───────────────────┘ call reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B' │ ┌───────────────────┐ │ │{ │ └──│ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │// in_i = 2 │ reverse(); │// ca = 'C' │ │ └───────────────────┘ call reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │// in_i = 2 │ if ( (ca = aa[++in_i]) != '\0' ) { │// ca = 'C' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ /*in_i = 3,ca = '\0'*/│ if ( (ca = aa[++in_i]) != '\0' ) { │ │ reverse(); │ │ printf("%c", ca); │ │ } /* 上面這兩行,並沒有被執行 */ │ │} /* 因為 ca == '\0' is true */ │ └───────────────────┘ leave reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 2 │ ; /* reverse() */ │ │ printf("%c", ca); /* print 'C' */ │//ca = 'C' │ } │ │} │ └───────────────────┘ leave reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ ┌───────────────────┐ │ │reverse() │ └──│{ │ │ char ca; │ │ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B' │ ; /* reverse() */ │ │ printf("%c", ca); /* print 'B' */ │ │ } │ │} │ └───────────────────┘ leave reverse() ┌────────┐ │main() │ │{ │ │ ┌───────────────────┐ │ │reverse() │ │ │{ │ │ │ char ca; │ └─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A' │ ; /* reverse() */ │ │ printf("%c", ca); /* print 'A' */ │ │ } │ │} │ └───────────────────┘ leave reverse() ┌──────────┐ │main() │ │{ │ │ ; /* reverse() */ │ │ printf("\n"); │ │ │ │ │ └──────────┘ 所以他就會從後面開始印囉 謝謝收看 有錯煩請指正, 感謝你! -- 貓 http://www.onlypet.com.tw/dendrobium -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.12.212 ※ 編輯: dendrobium 來自: 59.116.12.212 (06/21 12:32) ※ 編輯: dendrobium 來自: 59.116.12.212 (06/21 12:36)
LPH66:推一個圖解! 06/21 13:29
flashliqu:推一下 06/21 13:57
carlcarl:好棒的圖解@@ 06/21 14:09
ShaiMo:好精美的圖解@@ 06/21 15:16
kikiqqp: 詳細的圖解@@ 06/21 15:39
james732:厲害的圖解@@ 06/21 16:38
ledia: 超強的圖解@@ 06/21 18:54
max8568: 用心的圖解@@ 06/22 17:28