我想知道这4个符号是什么意思。我是C语言中的新手,我不确定这是否被认为是指针算术?
1. (*x)++
2. *(x++)
3. ++(*x)
4. *(++x)
由于
答案 0 :(得分:6)
(*x)++
- 增加x
指向的值(后增量,返回原始值)
*(x++)
- 增量x
(后增量)取消引用原始指针。
++(*x)
- 与#1相同,但返回递增的值。
*(++x)
- 与#2相同,但取消引用结果指针。
此外,#2和#4更改指针(指针算术)的值,而#1和#3 - 更改x
指向的值(即:在算术中不管-x-点)
答案 1 :(得分:5)
1. (*x)++
x
指向的值正在后递增。这将在递增操作之前产生指向的值。
2. *(x++)
指针x
被取消引用并且后递增。这将返回递增操作之前x
指向的值。
3. ++(*x)
x
指向的值正在预先递增。这将在递增操作之后产生指向的值。
4. *(++x)
指针x
在预先递增后被解除引用。这将产生紧跟x
当前指向的位置之后的位置值。
自2& 4改变x
本身的值,它们被认为是指针算术的例子。 1& 3修改x
指向的对象,但不修改指针本身;所以这些不被认为是指针算术。
答案 2 :(得分:1)
(*x)++
增加x
指向的值并返回其旧值。*(x++)
将x
更改为指向下一个内存地址(确切地说,这是由x
声明指向的大小决定的)并返回存储的值在旧地址。++(*x)
增加x
指向的值并返回其新值。*(++x)
将x
移至下一个地址(请参阅2),并返回新地址中存储的值。答案 3 :(得分:0)
涉及增加或减少指针值的所有内容(与其指向的值相反)都被视为指针算术。因此,2和4是指针算术的例子,而1和3不是。
例如,(*x)++
表示首先找到x
指向的值,然后将该值增加1,而*(x++)
表示增加x
本身(是,让它指向它最初指向的直接右边的元素),然后找到x
最初指向的元素的值。