首先是引用情形下的c++原始碼:
複製** **如下:
void add(int a, int b, int&c)
int main()
下面是main對應的彙編碼:
複製** **如下:
; 6 : int main()
xor eax, eax
mov esp, ebp
pop ebp
ret 0
下面是函式add對應的彙編碼:
複製** **如下:
; 1 : void add(int a, int b, int&c)
pop ebp
ret 0
從上面可以看到,對於傳值,c++確實傳的是乙份值拷貝,而對於引用,雖然是傳值的形式,但是其實編譯器內部傳遞的是值得位址
下面是指標的情形的c++原始碼:
複製** **如下:
void add(int a, int b, int* c)
int main()
mian函式對應的彙編碼:
複製** **如下:
; 6 : int main()
xor eax, eax
mov esp, ebp
pop ebp
ret 0
add函式對應的彙編碼:
複製** **如下:
; 1 : void add(int a, int b, int* c)
pop ebp
ret 0
可以看到,指標和引用的彙編碼一樣,因此兩者的作用也一樣
本文標題: 從彙編看c++中引用與指標的使用分析
本文位址:
從彙編看C 中的指標和引用
以前寫c 的時候,我認為指標是就是乙個存著另乙個變數位址的變數,他是有儲存空間的,而引用只是乙個變數的別名,不會占用儲存空間。最近在搞彙編,發現下面兩段 的生成的彙編 是一樣的 指標 void func 引用 void func 上面兩段 的生成的彙編都是 004019d0 push ebp 004...
從彙編code看C 的引用
今日在論壇上看到如下關於引用的code。我一直以為我對於引用很了解,直到膝蓋中了一箭。int val int ref int main 函式的彙編 如下 val函式返回變數i,直接把i放入eax。ref函式返回變數i的引用,把i的位址放入eax。區別和問題 int vv val int int 值傳...
從彙編的角度看C 裡的引用和指標
c 裡有引用和指標,使用過c 的應該都知道它們的異同點。本文將從彙編的角度去觀察這2者的本質。使用也非常簡單,在左側編寫c 在右側就會直接顯示對應的組合語言,也可以根據需要的平台來選擇對應的編譯器 我們使用的c 如下,比較簡單 int main void 選擇的編譯器是x86 64 gcc 9.2,...