引用的意義:
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...