下面的代碼混淆了我一下:C指針質疑
char * strcpy(char * p, const char * q) {
while (*p++=*q++);
//return
}
這是strcpy函數的執行剝離。從這段代碼中,我們看到指針p和q被賦值,而不是解除引用,q被賦值給p,直到達到\ 0 char。讓我感到困惑的是while循環的第一次迭代。據我所知,數組的指針指向數組的第一個元素。在這段代碼中,指針在賦值發生之前是增量賦值的(right?),所以從我的理解中,第一個元素永遠不應該被賦值給p(因爲後賦值發生在賦值之前),但它確實存在,我不理解後面的魔法。任何人都足以解釋爲什麼? :-)
由於
你對post/pre的定義似乎是倒退的。 Post =之後,Pre =之前。這裏的後遞增表示第一個字符將被複制,然後指針將遞增。 – Marlon
爲什麼C++標籤(和標題)?這是一個C庫函數。 –
看起來像我的完美有效的C++代碼@Paul。那麼爲什麼不* C++標籤? –