对于C++中的给定原始指针类型T* ptr
,定义的所有operators列表是什么?C++中指针的运算符列表
回答
列表:
- 赋值运算符 -
ptr = some other pointer
- 的引用操作符 -
*ptr
。 - 数组运算符 -
ptr[N]
。 - 成员访问运算符
ptr->
如果T
是结构/类。 - 前后增量运算符 -
++ptr
和ptr++
。 - 前后减量运算符 -
--ptr
和ptr--
。 - 增量和赋值运算符 -
ptr += N
。 - 递减和赋值运算符 -
ptr -= N
。 - 一元
+
运营商:+ptr
。请注意,这在C99中无效。它仅在C++中有效。 - 二进制
+
运营商 -ptr + N
。 - 二进制
-
运营商 -ptr - N
和ptr1 - ptr2
。 - 等于:
ptr == some other pointer
。 - 不等于:
ptr != some other pointer
。 - 一元非运算符:
!ptr
。 - 小于运营商:
ptr < some other pointer
。 - 小于等于运营商:
ptr <= some other pointer
。 - 大于运营商:
ptr > some other pointer
。 - 大于等于运营商:
ptr >= some other pointer
。 - 运营商地址:
&ptr
。
'+ ptr'和'ptr + = N'和'ptr - = N'和'ptr1 - ptr2'怎么样?加载*和* s使其更加清晰。 –
@PaulEvans,一元+运算符不适用于指针,但您建议的其他运算符是。我将它们添加到我的答案中。 –
+1很有意思,显然'+ ptr'什么都不做,但我认为不允许它是有意义的,因为'-ptr'根本没有任何意义。很明显,大多数编译器忽略'+ ptr'作为礼貌 - 但是它?如果你的意思是“N + ptr”,但是因为编辑了“N”的意外而丢失了! –
假设
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]
在gcc中,一元运算符+ t似乎不会产生任何错误... – Vincent
@Vincent,这可能是因为它什么都不做。 – GreatAndPowerfulOz
- 1. C++,指针和运算符
- 2. C++指向运算符的指针
- 3. C++指针运算
- 4. C/C++:指针运算
- 5. 的C指针运算
- 6. ++指针上的运算符
- 7. C++运算符重载返回指针
- 8. 指针标准C运算符
- 9. C++运算符重载 - 指针,乘法
- 10. 指针运算在C
- 11. Objective-C:指针运算
- 12. C指针减法运算
- 13. 运算符重载指针
- 14. 指针指针(* argv [])的指针运算?
- 15. C++中auto_ptr的指针运算
- 16. sizeof运算指针阵列
- 17. 指针运算与阵列
- 18. 指针运算
- 19. 运算符重载和指向对象的指针,C++
- 20. void *指针上的指针运算
- 21. 指针数组上的指针运算
- 22. “this”指针上的指针运算
- 23. iOS ARC:ManagedObject指针上的OR运算符
- 24. 奇怪的运算符与指针
- 25. 转换运算符的指针
- 26. C指针列表(双指针)
- 27. Ç - 指针运算
- 28. 指向字符串文字的指针的算术运算。
- 29. 什么是指针 - 成员 - > *和。*运算符在C++中?
- 30. 在C++中,条件运算符不支持指针?
[Pointer Arithmetic](http:// stackoverflow。com/questions/394767 /指针算术) – Downvoter