为什么显示表达式必须是可修改的左值

为什么我这样不对

img

但是书本上这样就可以

img


传递的实参是数组

img

a+i是一个右值表达式,怎么可能赋值?就比如a+2=5;编译能通过?你这里改成

temp=*(a+i);
*(a+i)=*b;
*b=temp;

左边是个表达式,生成的肯定是个临时变量,不是左值