C++左值和右值
所属分类 c
浏览量 784
int a = 7;
int & leftRef = a;
左值引用
右值是一个临时值,不能被程序的其他部分访问
int square(int a){
int result = a * a;
printf("result address in square %p \n",&result);
return result;
}
int main(){
int a = 0;
a = 3;
cout << a << endl;
a = square(3);
cout << a << endl;
int && rightRef = square(5);
cout << rightRef << endl;
cout << rightRef << endl;
printf("%p \n",&rightRef);
return 0;
}
a 是一个左值,代表一个内存位置,它可以被程序的其他部分访问
表达式 square(3) 是一个右值,
代表一个由编译器创建的临时内存位置,保存由函数返回的值
该内存位置仅被访问一次, 赋值给a后,立即被删除,再也不能被访问了
对于包含右值的内存位置来说
它虽然没有名称,但是可以从程序的其他部分访问到它
C++11 引入右值引用,表示一个没有名称的临时对象
程序的其他部分可以访问该内存位置
右值引用不能 指向 左值
上一篇
下一篇
exit atexit 及 abort
C语言stdlib使用实例
程序各个段text data bss stack heap
springboot jar包无法解压
2021年1到8月主要税收收入
springboot应用日志无法输出到指定目录