→ xluds24805:*str++同*(str++)將指標推進一格 09/23 22:48
→ xluds24805:(*str)++會把你的name1的值從"ABCDEF"變成"BCDEFG" 09/23 22:49
→ SNSDpk5566:感謝我懂 可是我是問 在putchar中為何(*str)++ 跑出來 09/23 22:49
→ bibo9901:(*str)++ 是把 *str + 1 之後傳回 *str 09/23 22:52
→ SNSDpk5566:(*str)++ 會推掉 ABCDEF -> BCDEFG -> CDEFGH?? 09/23 22:52
→ bibo9901:所以putchar拿到的仍是舊的值 09/23 22:52
→ bibo9901:疑...我有語病. 簡單來說就是"先遞增然後傳回原值" 09/23 22:54
→ SNSDpk5566:請問是說 先 put (*str) 所以是 A then (*str)+1 09/23 22:57
→ SNSDpk5566:所以"現在" 的位置 是 *str = B 09/23 22:57
→ SNSDpk5566:以第一圈來說 09/23 22:59
→ silentxdog:我的認知 *str++ 是先將str取值,也就是a字元後再將str 09/30 00:58
→ silentxdog:指向的位址做++動作,而(*str)++ 指的是對str取值後, 09/30 01:00
→ silentxdog:也就是字元A後,再對字元A做++動作其結果為B,但在這個 09/30 01:02
→ silentxdog:putchar裡會先輸出A字元後再對A字元做++動作,所以會看 09/30 01:06
→ silentxdog:第一個輸出A字元結果,++後的字元B並不會輸出,接著再 09/30 01:10
→ silentxdog:回FOR LOOP繼續執行,兩者的差別上第一個是對位址做++ 09/30 01:12
→ silentxdog:動作,第二個是對取出的字元做++的動作 09/30 01:13