天天看點

c++引用學習筆記

int a = 10;

int *b = &a; //指針

int &c = a; //引用

引用c相當于a的别名,修改c相當于修改a

int &c = a; 的過程“相當于”(注意不是等于,隻是為了友善了解而已)以下兩個步驟:

第一步:int *c_reference  = &a;  即,首先定義一個指針指向變量的位址

第二步:#define c (*c_reference);  然後将引用的名字定義為該指針的取值符号

引用的優點:

作為參數傳遞到子函數時不産生參數變量的副本,即不會複制參數變量的内容到函數堆棧的頂部(注意不是push壓棧,具體操作請看《深入了解》)

但c++的編譯器到底是如何傳參的我還沒有去研究,有興趣的朋友可以去研究下,我的猜測是:“傳遞指針到子函數,但編譯器維護着引用的使用方法,是以每次使用這個參數,将用(%exx)(相當于上面說的*c_reference)的方法來實作。”

繼續閱讀