int c[5] = {4,8,3,1,9};
int *p = &c[2]; // 指向 c[2] (值 3)
printf("%d\n", *p++); // 輸出 3,而非 4
++(後置)優先級 高于 *(解引用)。++ 從左到右,* 從右到左。因此 *p++ 等價於 *(p++)。
p 的值(地址 &c[2])。*p 獲取值 3,作為整個表達式的結果。p++ 將 p 移動到下一個 int 位置(&c[3])。printf 打印步驟 2 的結果 3。printf("%d\n", *++p); // 等價 *(++p)
// 1. p 先移動到 &c[3] (值 1)
// 2. 解引用獲取 1
// 3. 輸出 1
「後置 ++:先用值,再加一;前置 ++:先加一,再用值。」
while (*p++ = *q++) ; // 經典字符串拷貝
// *p++ 取 q 指向字符賦值給 p 指向位置,雙指針同步後移
// 遇到 '\0' 賦值結果為 0,循環結束