首页  

C++左值和右值     所属分类 c 浏览量 771
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应用日志无法输出到指定目录