c++之變量的引用


  昨天耀哥在問引用的時候,當時有一點點懵。平時經常用到引用的時候就是函數的參數傳遞。

  引用就是某一變量的一個別名,對引用的操作與對變量直接操作完全一樣,但是要注意到的是引用並沒有新開辟內存空間,因此並不占內存單元。在聲明引用時,必須同時對其進行初始化。

  為了簡單理解引用,寫了以下代碼:

    int a = 10;
    int b = 20;
    std::cout << "a" << &a << std::endl;
    std::cout << "b" << &b << std::endl;
    std::cout << "________________________" << std::endl;
    int &c= a;
    std::cout << "a" << &a << std::endl;
    std::cout << "b" << &b << std::endl;
    std::cout << "c" << &c << std::endl;
    std::cout << "________________________" << std::endl;
    c = b;
    std::cout << "a" << &a << std::endl;
    std::cout << "b" << &b << std::endl;
    std::cout << "c" << &c << std::endl;
    std::cout << "________________________" << std::endl;

  代碼運行結果如下:

  不過在先前的調試中,當代碼走到“c=b;”時,看到a,b,c的值均為20。小腦袋有點混亂了,一度以為變量c同時是變量a和b的引用了。是知道的,引用初始化后,並不能再把該引用作為其他變量的別名了。一度還以為是c++11對規則進行了新的修改呢,還專門去查了c++11官方文檔。差點沒有反應過來。仔細一想,原來”c=b;“並不是修改別名,而只是簡單的整形賦值操作,邏輯上等同於“c= 20”;於是,寫了上面的代碼對想法進行了驗證。果然發現變量c的地址還是和變量a地址相同,並沒有在執行“c=b;”后,改變其地址。


免責聲明!

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



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