2
A
回答
6
(*x)++
- 增量由x
指向的值(后置,返回原始值)*(x++)
- 增量x
(后增量)解除引用的原始指针)。++(*x)
- 与#1相同,但返回递增的值。*(++x)
- 与#2相同,但取消引用生成的指针。
另外,#2和#4的变化的指针(指针算术)的值,而#1和#3 - 改变由x
指向的值(即:不管-X-点-在算术) 。
0
一切,包括增加或减少一个指针的值(而不是什么它指向的值)被认为是指针运算。因此,2和4是指针算术的例子,而1和3则不是。
例如,(*x)++
装置以第一值找到x
点,然后通过递增1该值,而*(x++)
意味着递增x
本身(即,使它指向所述元件的什么立即右最初指向),然后找到x
最初指出的元素的值。
5
1. (*x)++
x
指向的值正在后递增。这将在增量操作之前产生指向值。
2. *(x++)
指针x
被解除引用和递增后。这会返回递增操作之前x
指向的值。
3. ++(*x)
x
指向的值正在预先递增。这将在增量操作之后产生指向值。
4. *(++x)
指针x
在预递增后被解除引用。这将产生紧接在x
指向的位置之后的位置的值。
由于2 & 4改变了x
本身的值,它们被认为是指针算术的例子。 1 & 3修改x
指向的对象,但不修改指针本身;所以这些不被认为是指针算术。
1
(*x)++
递增值由x
指出,并返回其老值。*(x++)
变化x
指向下一个内存地址(确切位置是由什么x
被宣布为是指向大小确定),并返回存储在老地址的值。++(*x)
增加x
指向的值并返回其新的值。*(++x)
将x
移动到下一个地址(参见2),并返回存储在新的地址处的值。
相关问题
- 1. C语言中这些volatile指针的含义是什么?
- 2. 指针算术
- 3. 指针算术
- 4. C++指针算术
- 5. C指针算术
- 6. 指针算术的澄清
- 7. 术语:术语'saga'的含义
- 8. 这两个指针算法
- 9. 指针指针之类的指针之类的算术
- 10. 算术指针和fstream C++
- 11. 指针算术错误(OpenCL)
- 12. Android NDK指针算术
- 13. C++指针算术奇怪
- 14. 指针算术问题
- 15. C++算术具有指针
- 16. 指针算术问题
- 17. 空指针算术错误
- 18. python ctypes指针算术
- 19. nullptr和指针算术
- 20. 结构和指针算术
- 21. 指针算术帮助
- 22. 指针算术符号
- 23. void *与char *指针算术
- 24. 释放指针算术
- 25. 通用类方法中的THIS这个术语的含义?
- 26. 这两个涉及指针算术的语句有什么区别?
- 27. C++指针算术。没有操作符“+”匹配这些操作数
- 28. 二维数组的C指针算术
- 29. 指针算术 - 相同的表达式?
- 30. 用于数组的C指针算术
1和3不等价。 1产生'* x'的当前值,并且作为副作用增加它。 3的不同之处在于它产生增加的'* x'值,而不是原始值。 –
@凯斯,你说的对,澄清 – littleadv
你需要修正编号。 –