【发布时间】:2014-11-20 23:43:22
【问题描述】:
好的,我已经四处搜索,没有什么可以解释这会在第 2 行和第 3 行中产生“错误:需要左值作为赋值的左操作数”。当然,我尝试了一些替代语句,但没有任何效果,我不明白为什么编译器不接受它。 arr 是一个指针数组,这是一个简单的交换。
player tmp = *(arr+i);
arr+i = (*(arr+i+1));
(arr+i+1) = &tmp;
【问题讨论】:
好的,我已经四处搜索,没有什么可以解释这会在第 2 行和第 3 行中产生“错误:需要左值作为赋值的左操作数”。当然,我尝试了一些替代语句,但没有任何效果,我不明白为什么编译器不接受它。 arr 是一个指针数组,这是一个简单的交换。
player tmp = *(arr+i);
arr+i = (*(arr+i+1));
(arr+i+1) = &tmp;
【问题讨论】:
使用 [] 语法可能会更容易:
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;
【讨论】:
好吧,arr+1 不是左值。这意味着它不是您可以分配的东西。你的意思是在某个地方有一个* 吗?
【讨论】: