指針僅支持:
其他運算(乘除、指針+指針)無意義且非法。
char *pc; short *ps; long *pl; // 假設地址 0x1000 pc++; // 0x1001 (sizeof(char)=1) ps++; // 0x1002 (sizeof(short)=2) pl++; // 0x1004 (sizeof(long)=4)
int *p = arr; int x = *p++; // 等價 *(p++):取值後 p 移動 int y = *++p; // 等價 *(++p):p 移動後取值 int z = (*p)++; // 取值後該元素值++ int w = ++(*p); // 該元素值++ 後取值
*p++ 中 ++ 結合 p;(*p)++ 中 ++ 結合解引用結果。括號改變結合對象。
int a[] = {1,2,3,4};
int *p = a;
cout << *p++ << " " << *++p; // 輸出: 1 3 (p 先指向 1, 取值後指向 2; 先移到 3 再取值)