部落格72 指標和引用的底層實現

2021-09-25 06:20:47 字數 684 閱讀 2091

內容:今天記錄一下之前測試的利用指標和引用來修改所指變數的值時的區別

測試**:

反彙編結果:

1.定義指標和定義引用:

首先可以看到定義指標和定義引用的底層:其實兩者都是一樣的,都是存放了所指變數的位址,通過他來索引到所指變數的。

彙編解釋:

lea eax,[a]的意思:是取a的位址放入eax暫存器。

mov dword ptr [b],eax的意思是:把eax暫存器的值放入b變數的位址的那段空間

2.利用指標和利用引用分別修改所指變數的值

實現底層:可以看到也是一樣的,先將b變數的位址空間上的值,也就是b變數的值放入eax暫存器,此時eax暫存器裡面就是變數a的位址,然後將5放入eax暫存器的值所指向的空間中,也就是放入變數a的空間中。可以看到,引用的底層實現其實是跟指標相似的。

7 4 指標和引用

7.4.1指標的好處 1.可以動態分配記憶體。2.對多個相似變數進行一般訪問。3.為動態資料結構,尤其是樹和鍊錶提供支援 4.遍歷陣列,解析字串。5.高效的按引用複製陣列和結構。7.4.2 引用還是指標 1.指標本質是儲存位址的變數,指標則是 從一而終 的別名,且不能為空 2.作為引數傳遞,二者不同...

011 指標的引用

指標的引用 if 1 struct teacher int getteacher teacher p teacher tmp tmp teacher malloc sizeof teacher 1 if tmp null tmp age 1111 p tmp p就像一把鑰匙,通過位址去開啟一扇門,p...

1 指標和引用的區別

1 什麼是指標?2 什麼是引用?引用 引用是乙個物件的別名,主要用於函式引數和返回值型別,符號x 表示x型別的引用。1 引用不可以為空,但指標可以為空。引用是物件的別名,引用為空 物件都不存在,怎麼可能有別名!所以定義乙個引用的時候,必須初始化。宣告指標是可以不指向任何物件,因此,使用指標之前必須做...