【问题标题】:In c, is there an equivalent of "+=" for "p = p->next"?在c中,“p = p->next”是否有“+=”的等价物?
【发布时间】:2021-03-21 19:19:36
【问题描述】:

我目前正在学习 C,现在从事结构和列表的工作。 我只是想知道,对于这种情况,是否有类似 "a = a+b" = "a += b" 的东西。

【问题讨论】:

  • 不,没有。
  • 你的意思是添加结构变量和其他相同的结构变量?
  • 不,那看起来怎么样? p ->= next?并不比p = p->next更具可读性。
  • 请不要同时标记 C 和 C++。
  • @TanveerBadar 一旦发布了 C++ 答案,请不要删除 C++ 标签。请参阅标签 wiki 中的 C 和 C++ 标签用法。我做了一个回滚。

标签: c operator-overloading assignment-operator


【解决方案1】:

如果您使用 C++,那么您可以为内部包含指针 p 的列表定义自己的迭代器类,而不是原始指针。

在这种情况下,您可以替换表达式

p = p->next;

对于表达式

++it;

引擎盖下会做p = p->next

类似

iterator & operator ++()
{
    iterator::p = iterator::p->next;
    return *this;
}

其中指针piterator 类的数据成员。

对于复合赋值运算符,没有像->=.= 这样的运算符。所以你不能超载它们。

根据 C 和 C++ 标准,赋值运算符是其中之一

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

【讨论】:

    【解决方案2】:

    没有。 你可以使用宏,但我不会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      相关资源
      最近更新 更多