2014-11-25 169 views
-1

我被表達式*d++=*s++弄糊塗了。如何去實踐它。如何解釋運營商的優先級* d ++ = * s ++

int main() 
{ 
    char s[20]="hello,world"; 
    char d[20]; 
    char *src=s; 
    char *des=d; 
    while(*src) *des++=*src++; 

    return 0; 
} 
+3

不再是 - 有人編寫難以理解且難以理解的代碼,因此需要在SO上提出問題。爲什麼不把它分成多行,以便它可讀? – 2014-11-25 03:19:33

+0

可能重複[取消引用後的* p ++增量嗎?](http://stackoverflow.com/q/9255147/1708801) – 2014-11-25 03:20:31

+1

爲什麼不在'* des ++ = * srC++'之前放置'printf()'並且之後觀察指針位置和值的src和des的變化?它讓你更好地理解它是如何運行的。 – SSC 2014-11-25 03:23:08

回答

5

它具有相同的行爲:

*dest = *src; 
dest++; 
src++; 

也就是說複製的字符指向的src的字符由dest指向。然後將每個指針移到下一個字符元素。