int a[] = {6, 60, 600};
int *p = a;
*p++; // 相當於 *(p++):先取值 6,再 p 指向 60
printf("%d", *p); // 輸出 60
// 若想讓第一個元素 +1:
(*p)++; // 先解引用,再遞增值
printf("%d", *p); // 輸出 7
口訣:後綴 ++ 結合性高於 *,*p++ 等價 *(p++)。
void str_cpy(char *pDest, char *pSrc) {
while (*pDest++ = *pSrc++); // 單行完成拷貝含 '\0'
}
原理:*pSrc++ 取字符並推進指針,賦值給 *pDest++,賦值表達式的值即為賦入的字符;遇 '\0'(值 0)循環終止。
strcpy 的鏈式表達式優勢char sz0[32], sz1[32], sz2[] = "Hello world";
strcpy(sz0, strcpy(sz1, sz2)); // 內層拷貝 sz2→sz1,返回 sz1 給外層
printf("%s", sz0); // 輸出 "Hello world"
strcpy 返回 char*(目的地址),使鏈式調用成為可能,類似 a = b = c = 1 的賦值鏈。
「遇到疑惑先調試分析內存。內存是什麼樣,它就是什麼樣。相信機器,用實踐驗證理論。」
*p++ vs (*p)++:優先級決定語義。while (*d++ = *s++) 是 C 語言極簡風格的經典。strcpy)啟用鏈式表達式,提升表達力。