2015-10-23 90 views

回答

3

列表:

  1. 賦值運算符 - ptr = some other pointer
  2. 的引用操作符 - *ptr
  3. 數組運算符 - ptr[N]
  4. 成員訪問運算符ptr->如果T是結構/類。
  5. 前後增量運算符 - ++ptrptr++
  6. 前後減量運算符 - --ptrptr--
  7. 增量和賦值運算符 - ptr += N
  8. 遞減和賦值運算符 - ptr -= N
  9. 一元+運營商:+ptr。請注意,這在C99中無效。它僅在C++中有效。
  10. 二進制+運營商 - ptr + N
  11. 二進制-運營商 - ptr - Nptr1 - ptr2
  12. 等於:ptr == some other pointer
  13. 不等於:ptr != some other pointer
  14. 一元非運算符:!ptr
  15. 小於運營商:ptr < some other pointer
  16. 小於等於運營商:ptr <= some other pointer
  17. 大於運營商:ptr > some other pointer
  18. 大於等於運營商:ptr >= some other pointer
  19. 運營商地址:&ptr
+0

'+ ptr'和'ptr + = N'和'ptr - = N'和'ptr1 - ptr2'怎麼樣?加載*和* s使其更加清晰。 –

+0

@PaulEvans,一元+運算符不適用於指針,但您建議的其他運算符是。我將它們添加到我的答案中。 –

+0

+1很有意思,顯然'+ ptr'什麼都不做,但我認爲不允許它是有意義的,因爲'-ptr'根本沒有任何意義。很明顯,大多數編譯器忽略'+ ptr'作爲禮貌 - 但是它?如果你的意思是「N + ptr」,但是因爲編輯了「N」的意外而丟失​​了! –

0

假設

T* t; 

解除引用

(*t).foo 

t->foo 

指針運算

t = t + 10; t += 10; // will add 10*sizeof(T) 
t = t - 10; t -= 10; // will subtract 10*sizeof(T) 

--t; 
++t; 
t--; 
t++; 

次像訪問數組:(通常是令人難以接受的),我能想到的運營商的

t[10] 
+1

在gcc中,一元運算符+ t似乎不會產生任何錯誤... – Vincent

+0

@Vincent,這可能是因爲它什麼都不做。 – GreatAndPowerfulOz