Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 错误:在带指针的交换中,左值必须作为赋值的左操作数_C_Arrays_Pointers - Fatal编程技术网

C 错误:在带指针的交换中,左值必须作为赋值的左操作数

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

好的,我已经搜索过了,没有任何东西可以解释这会在第2行和第3行中产生什么“错误:赋值的左操作数需要左值”。当然,我已经尝试了一些替代语句,但没有任何效果,我不明白为什么编译器不接受它。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;