2015-10-23 88 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