首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

指針知識(四):指針算術運算與優先級陷阱

     編輯:C++ 入門

指針僅支持:

  • 指針 ± 整數(按元素大小移動)
  • 指針 - 指針(同類型,得元素距離)
  • 比較運算 (==, <, > 等)

其他運算(乘除、指針+指針)無意義且非法。

類型決定步長

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 再取值)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved