*(++ptr) 是个什么样的运算符?
What kind of operator is *(++ptr)?
我是 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)
?
先增加指针,然后将delta_force
添加到指针指向的值。
*(++ptr) += delta_force;
与
的含义相同
ptr = ptr + 1;
*ptr = *ptr + delta_force;
这是递增运算符++和指针解引用符号*
的组合
因此,首先您将地址的值增加 1,然后取消引用您的指针以获取其值。
总结:您将前往下一个指针
从内到外阅读。 *(++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
in c 编程语言中的指针....(*) 表示 'value at adress of'
此处指针 ptr 包含 FORCE 宏的地址,因此首先地址将递增然后 ptr 地址处的值将在每次循环迭代期间更新为新值...
我是 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)
?
先增加指针,然后将delta_force
添加到指针指向的值。
*(++ptr) += delta_force;
与
的含义相同ptr = ptr + 1;
*ptr = *ptr + delta_force;
这是递增运算符++和指针解引用符号*
的组合因此,首先您将地址的值增加 1,然后取消引用您的指针以获取其值。
总结:您将前往下一个指针
从内到外阅读。 *(++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
in c 编程语言中的指针....(*) 表示 'value at adress of'
此处指针 ptr 包含 FORCE 宏的地址,因此首先地址将递增然后 ptr 地址处的值将在每次循环迭代期间更新为新值...