函數名前加 & 符號的深入理解 C++


#include <iostream>

using namespace std;

int& test_str()
{
    int a = 1;
    
    return a; //通過返回 a 的地址來進行 值的返回(即 a的地址中所儲存的值)
}

int ff(int t) //返回的就是個數 a 的值,a屬於局部變量,函數調用完后內存自動釋放,地址也就不存在
//所以運行 &ff(b) 會報錯 :“&”要求左值 ,即沒有地址可以取
{
    static int a = 3;
    return a;
}

int& fun(int &a)
{
    cout <<"aa "<< &a << endl;
    return a;
}
int main()
{
    /*int *p= &test_str();

    cout << *p << endl;
    cout << *p << endl;*/

    int b ;

    cout <<"b: "<< &b << endl;
    b = 4;
    cout << "fun :" << &fun(b) << endl;

    int a;

    cout <<"a:"<< &a << endl;
    
    a= fun(b); //把 fun(b) 地址中儲存的值 賦值 給 a ,因此 a 的地址沒有發生改變
    cout <<"a :"<< &a << endl;

    /*int b = 1;
    cout << "b :" << &b << endl;

    int *p = new int;
    
    *p = ff(b);*/

    //cout << "ff :" << &ff(b) << endl;

    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM