【问题标题】:error: lvalue required as left operand of assignment in a swap with pointers错误:在与指针的交换中需要左值作为赋值的左操作数
【发布时间】:2014-11-20 23:43:22
【问题描述】:

好的,我已经四处搜索,没有什么可以解释这会在第 2 行和第 3 行中产生“错误:需要左值作为赋值的左操作数”。当然,我尝试了一些替代语句,但没有任何效果,我不明白为什么编译器不接受它。 arr 是一个指针数组,这是一个简单的交换。

player tmp = *(arr+i);
arr+i = (*(arr+i+1));
(arr+i+1) = &tmp;

【问题讨论】:

    标签: c arrays pointers


    【解决方案1】:

    使用 [] 语法可能会更容易:

    player tmp = arr[i];
    arr[i]     = arr[i+1];
    arr[i+1]   = tmp;
    

    如果你坚持使用 *(arr+i) 语法:

    player tmp = *(arr+i);
    *(arr+i)   = *(arr+i+1);
    *(arr+i+1) = tmp;
    

    【讨论】:

    • 它适用于第二种语法。可能也适用于第一个。但我以为我试过这个。还是谢谢你。
    【解决方案2】:

    好吧,arr+1 不是左值。这意味着它不是您可以分配的东西。你的意思是在某个地方有一个* 吗?

    【讨论】:

      猜你喜欢
      • 2019-12-11
      • 2023-04-02
      • 1970-01-01
      • 2011-12-20
      • 2011-03-04
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多