作者pujols05 (qq)
看板C_and_CPP
標題[問題] 指標-字串連結
時間Sun Apr 28 16:00:50 2013
//--------------------
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