我的問題是,這段代碼是做什么的(來自http://www.joelonsoftware.com/articles/CollegeAdvice.html):while (*s++ = *t++);該網(wǎng)站說上面的代碼復制了一個字符串,但我不明白為什么...與指針有關嗎?
3 回答

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
等效于:
while (*t) {
*s = *t;
s++;
t++;
}
*s = *t;
當t指向的字符為is時'\0',while循環(huán)將終止。在此之前,它將復制所t指向的char到所指向的char s,然后遞增s并t指向其數(shù)組中的下一個char。

素胚勾勒不出你
TA貢獻1827條經(jīng)驗 獲得超9個贊
幕后花了很多時間:
while (*s++ = *t++);
在s和t變量的指針(幾乎可以肯定字符),s作為目的地。以下步驟說明了正在發(fā)生的事情:
t(*t)的內容被復制到s(*s),一個字符。
s和t都增加(++)。
分配(副本)返回被復制(到while)的字符。
所述while繼續(xù)進行,直到該字符是零(字符串中的端部C)。
實際上,它是:
while (*t != 0) {
*s = *t;
s++;
t++;
}
*s = *t;
s++;
t++;
但以更緊湊的方式寫出來。
- 3 回答
- 0 關注
- 720 瀏覽
添加回答
舉報
0/150
提交
取消