C++總結 —– 引用

來源:互聯網
上載者:User

《Thinking in C++》中解釋:

   引用(&)像是一個能編譯器逆向引用的常量型指標。通常用於函數的參

數表中和函數的傳回值,也可以獨立使用。例如:

int x;

int &r = x;

當建立一個引用時,引用必須被初始化指向一個存在的對象,但也可以:

int &q = 12;

這裡,編譯器指派了一個儲存單元,它的初值初始化為12。引用必須和儲存單元聯

系,訪問引用時,就是訪問那個儲存單元。如:

int x = 0;

int &a = x;

a++;

事實上就是增加x。考慮引用最簡單的方法是把它當作是一個奇特的指標,這個指

針的優點是不必懷疑它是否被初始化了(編譯器強迫它初始化),也不必知道怎麼樣

對他逆向引用(這由編譯器做)。

使用引用時有一定的規則:

■  當引用被建立時,必須初始化。(指標則可以在任何時候被初始化)

■  一旦一個引用被初始化為指向一個對象,它就不能被改變為對另一個對象的引

用。(指標可以在任何時候指向另一個對象)

       ■  不可能有NULL應用,必須保證引用和一塊合法的儲存單元關聯。

       函數中的引用:

       最常看見的引用的地方是函數參數和傳回值中,當引用被用做函數參數時,函數內任何對該引用的改變將對函數外的參數改變。如果函數中返回一個引用,必須象從函數種返回一個指標一樣對待。

      

       指標引用:

       在C語言中,如果想改變指標本身而不是它所指向的內容,函式宣告可能像這樣:

       void fun(int**);

       傳遞它時,必須是指標的地址:

       int l = 47;

       int *p = &l;

       fun(&p);

       對於C++中的引用,文法清晰多了,函數參數變成指標的引用,用不著取得指標的地址。

       #include <iostream.h>

       void increment(int*& i) { i++;}

       main()

       {

           int *i = 0;

           cout<<“i=”<< i << endl;

           increment(i);

           cout<<“i=”<< i << endl;

        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.