我对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)
?
答案 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地址的值都会更新为新值...