什么样的运算符是*(++ ptr)?

时间:2016-07-28 13:28:34

标签: c pointers operator-keyword notation

我对C很新,有时候会遇到奇怪的符号,特别是与指针有关。

一个很短的例子:

....
real *ptr;
real delta_force;
for(i<particles;...)
{
  ...some calculations
  ptr=&FORCE(i,...);  //FORCE is a macro returning the current force on a particle
  *(++ptr) += delta_force;
  ...
 }
...

如何解释*(++ptr)

4 个答案:

答案 0 :(得分:8)

首先递增指针,然后将delta_force添加到指针指向的值。

*(++ptr) += delta_force;

相同
ptr = ptr + 1;
*ptr = *ptr + delta_force;

答案 1 :(得分:2)

从里到外阅读。 *(++ptr) += somevalue等于以下代码

++ptr; //increases the Pointer by the sizeof(real)
real v = *ptr; // dereferences the Pointer and assigns the value it is pointing to to v
v = v + somevalue; // increases v by somevalue
*ptr = v; // assigns the new value of v to the target of ptr

答案 2 :(得分:1)

这是增量运算符 ++ 和指针引用符号 *

的组合

首先,您将地址的值增加1,然后取消引用指针以获取其值。

总结:您将转到下一个指针

答案 3 :(得分:1)

在c编程语言的指针中....(*)表示'地址的值'

这里指针ptr包含FORCE宏的地址,所以首先地址会增加,然后在循环的每次迭代期间ptr地址的值都会更新为新值...