C 引用的本質

2021-08-23 14:32:16 字數 746 閱讀 6346

引用的意義:

1)引用作為其他變數的別名而存在,因此在一些場合可以代替指標

2)引用相對於指標來說具有更好的可讀性和實用性

引用的本質:

1、單獨定義普通引用時 必須初始化,說明很像乙個常量

#includeusing namespace std;

//1、第一點  單獨定義普通引用時 必須初始化,說明很像乙個常量

int main()

2、普通引用也佔記憶體空間

#includeusing namespace std;

//2、第二點 普通引用也佔記憶體空間 

struct teacher

;int main()

//輸出結果為76

3、引用的本質

1)引用在c++中的內部實現是乙個指標

int name = int *const name

2)c++編譯器在編譯過程中使用常指標作為引用的內部實現,因此引用所占用的空間大小與指標相同

3)從使用的角度來看,引用會讓人誤會其只是乙個別名,沒有自己的儲存空間。這是c++為了實用性而做出的細節隱藏

#includeusing namespace std;

void modifya(int &a)

void modify2(int *const a)

int main()

C 引用本質

b 50 mov eax,dword ptr b mov dword ptr eax 32h int d a lea eax,a mov dword ptr d eax d 60 mov eax,dword ptr d mov dword ptr eax 3ch 以上的 均來自具體的編譯器,怎麼樣,...

C 引用本質

引用本質究竟是什麼?或者說引用在計算機底層是怎麼實現的?我們來看下面一段c 1 int x 5 2 int y x 3 y 8 在vs2013下反彙編得到下面彙編 對應 1 mov dword ptr x 5 將常量5送入變數x中 對應 2 lea eax,x 取x的位址並送入eax暫存器中 mov...

C 引用本質

首先先來看一段 int main 通過vs除錯模式下檢視反彙編有如下結果 char refvar var 000d2a3c lea eax,var 000d2a3f mov dword ptr refvar eax char ptrvar var 000d2a42 lea eax,var 000d2...