從彙編看c 中引用與指標的使用分析

2022-10-04 05:21:08 字數 881 閱讀 7812

首先是引用情形下的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,...