C 错误:在带指针的交换中,左值必须作为赋值的左操作数
好的,我已经搜索过了,没有任何东西可以解释这会在第2行和第3行中产生什么“错误:赋值的左操作数需要左值”。当然,我已经尝试了一些替代语句,但没有任何效果,我不明白为什么编译器不接受它。arr是指针数组,这是一个简单的交换C 错误:在带指针的交换中,左值必须作为赋值的左操作数,c,arrays,pointers,C,Arrays,Pointers,好的,我已经搜索过了,没有任何东西可以解释这会在第2行和第3行中产生什么“错误:赋值的左操作数需要左值”。当然,我已经尝试了一些替代语句,但没有任何效果,我不明白为什么编译器不接受它。arr是指针数组,这是一个简单的交换 player tmp = *(arr+i); arr+i = (*(arr+i+1)); (arr+i+1) = &tmp; 嗯,arr+1不是左值。这意味着它不是你可以分配的东西。您的意思是在某处有一个*?使用[]语法可能会更容易: player tmp = arr
player tmp = *(arr+i);
arr+i = (*(arr+i+1));
(arr+i+1) = &tmp;
嗯,
arr+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;