关于函数返回值为左值的理解
左值:可以在等号的左边或者右边出现的值。
#include <iostream> using namespace std; /* 若返回静态变量或全局变量 可以成为其他引用的初始值 即可作为右值使用,也可作为左值使用 */ int getA() { static int a =10 ; a ++ ; return a; } int* getA2() { static int a =20 ; a++; return &a; } int& getA3() { static int a =30; a ++; printf("a:%d\n",a); return a; } int main() { int cc = getA(); printf("cc:%d\n",cc); int*w = getA2(); printf("w:%d\n",*w); int t = getA3();//a:31 printf("t:%d\n",t); //getA() = 100; //左操作数必须为左值 ====》 11=100 //getA2() = (int*)100; ////左操作数必须为左值 getA3() = 100;//a:32 getA3();//a:101 system("pause"); return 0; }
getA3()的返回值为对象的取地址符,所以可以直接进行赋值等操作,所以可以作为左值。

浙公网安备 33010602011771号