在c语言中,“p=p->next”是否有一个“+=”的等价物?

在c语言中,“p=p->next”是否有一个“+=”的等价物?,c,operator-overloading,assignment-operator,C,Operator Overloading,Assignment Operator,我目前正在学习C语言,现在是结构和列表的一部分。 我只是想知道,如果这种情况下有类似A+A+B= A+= B的东西。< P>如果使用C++,那么代替原始指针,可以为包含指针P.< /P>的列表定义自己的迭代器类。 在这种情况下,可以替换表达式 p = p->next; ++it; 为了表达 p = p->next; ++it; 引擎盖下的将执行p=p->next 差不多 iterator & operator ++() { iterator::p = iter

我目前正在学习C语言,现在是结构和列表的一部分。
我只是想知道,如果这种情况下有类似A+A+B= A+= B的东西。

< P>如果使用C++,那么代替原始指针,可以为包含指针P.< /P>的列表定义自己的迭代器类。 在这种情况下,可以替换表达式

p = p->next;
++it;
为了表达

p = p->next;
++it;
引擎盖下的将执行p=p->next

差不多

iterator & operator ++()
{
    iterator::p = iterator::p->next;
    return *this;
}
其中指针p是类迭代器的数据成员

对于复合赋值运算符,则不存在类似->=或..=这样的运算符。所以你不能让它们超载

根据C和C++标准,赋值算子是

= *= /= %= += -= <<= >>= &= ^= |=

如果你使用C++,而不是原始指针,你可以为包含指针P.< /P>的列表定义自己的迭代器类。 在这种情况下,可以替换表达式

p = p->next;
++it;
为了表达

p = p->next;
++it;
引擎盖下的将执行p=p->next

差不多

iterator & operator ++()
{
    iterator::p = iterator::p->next;
    return *this;
}
其中指针p是类迭代器的数据成员

对于复合赋值运算符,则不存在类似->=或..=这样的运算符。所以你不能让它们超载

根据C和C++标准,赋值算子是

= *= /= %= += -= <<= >>= &= ^= |=
没有。 你可以用宏,但我不会用。
你可以使用宏,但我不会。不,没有。你是说用其他相同的结构变量添加结构变量吗?不,看起来怎么样?p->=下一个?不比P= P->NExt更可读。请不要标记C和C++。@ TanveerBadar,请不要删除C++标签,一旦有C++答案发布。请参阅标签wiki中的C和C++标签用法。我做了一个回滚。不,没有。你是说用其他相同的结构变量添加结构变量吗?不,看起来怎么样?p->=下一个?不比P= P->NExt更可读。请不要标记C和C++。@ TanveerBadar,请不要删除C++标签,一旦有C++答案发布。请参阅标签wiki中的C和C++标签用法。我做了一个回滚。