Error:ivalue require as left operant of assignment
解答:该错误的意思是左操作数必须为左值,这个发生错误的原因在于赋值符号的左边不能是已确定的值,如:
3=n;或3=2是错的;
如果是对函数赋值,如:
#include<iostream>
using namespace std;
int f1(int a[],int i){
return a[i];
}
int main(){
int a[10];
for(int i=0;i<10;i++){
a[i]=i;
cout<<a[i]<<endl;
}
f1(a,3)=6;
for(int i=0;i<10;i++){
cout<<a[i];
}
}
本程序会发生 以上的错误 是因为函数f1()返回的是一个值而非变量等不确定的值;
解决办法:
1.将函数定义为引用类型 : int &f1(int a[] ,int i){......}; 且使用引用类型之后,在赋值运算符的任何一边均可使用f1()函数;
2.使用指针类型显式调用该函数: int * f1 (int a[] , int i){return &a[i] }; 调用: *f1(a,3)=6,即把a中下标为3的位置赋值为6;