看板 C_and_CPP 關於我們 聯絡資訊
//-------------------- char *strcat(char *dest,char *source) { char *ptr=dest; //找到dest字串的最後 while(*ptr++!='\0'); ptr--; //複製字串 while((*ptr++=*source++)!='\0'); return dest; //-------------------- 請問 while(*ptr++!='\0'); ptr--; 這裡書上的註解是要找到dest的最後位置 但是為什麼要ptr-- ptr--不是把位置往後移了嗎? while((*ptr++=*source++)!='\0'); return dest; 還有這個迴圈,看不出來他的意思是什麼 能請各位解釋一下嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.235.172.204
KoenigseggG:1.直接用實例去看應該能看懂2.它在賦值喔 04/28 16:08
leiyan:+過了-回來到原位而已 04/28 16:11
singlovesong:因為ptr++會先eval再++ 所以條件成立時 ptr已經被+ 04/28 21:38
singlovesong:到\0 的後面一個位置了 所以把它減回來接字串 04/28 21:39
pujols05:*ptr++,一開始是從第一個元素開始(ptr+0),當第一個元素 04/28 22:19
pujols05:不為\0時,條件成立,執行ptr--;我的理解是這樣,請問錯在哪 04/28 22:22
bibo9901:注意while( )後面有個分號. 04/28 22:27
xluds24805:當*ptr == '\0'時會跳出while迴圈,但是因為*ptr++ 04/28 22:40
xluds24805:在執行完這行後,*ptr會被再多加1,所以要減回來 04/28 22:41
pujols05:謝謝樓上幾位,是我少看分號才會理解錯= = 04/29 00:07
pujols05:順便請問一下之前的PO文,代碼:#1HQwPfbW,我有提問在推文 04/29 00:09