傳引用,到底傳遞的什麼?

2021-09-30 05:50:53 字數 1005 閱讀 9205

今天在c++

課上,老師模稜兩可地說了說

c++的引用,竟然犯了引用能指向另乙個變數的錯誤。。。

廢話不多說,傳引用,究竟是傳什麼?第乙個感覺是傳位址,下邊讓我們驗證一下。

這個是我寫的一段測試**,實現了兩個變數的值交換。

轉到vc

的反彙編下觀察:

主函式中對swap

函式的呼叫部分:

swap(m, n);

0102153c  lea         eax,[n]  ;在這裡傳入了

n的位址

0102153f  push        eax  

01021540  lea         ecx,[m]  ;在這裡傳入了

m的位址

01021543  push        ecx  

01021544  call        swap (102125dh) 

01021549  add         esp,8 

swap的實現:

bool swap(int &a, int &b)

010214fa  pop         edi  

010214fb  pop         esi  

010214fc  pop         ebx  

010214fd  mov         esp,ebp 

010214ff  pop         ebp  

01021500  ret          

發現,傳入的依然是變數的位址,再加上網上的一些資料,可以知道:傳引用就是在傳位址,只不過在操作上邊有別於指標(

指標是一塊位址,引用是這塊位址的資料)。

感謝我的老師

感謝我的小秀秀

感謝我的朋友

很願意和您交朋友:[email protected]

值傳遞和引用傳遞,java到底按什麼傳遞的

眾說紛紜 講的挺不錯的,為了防止以後找不到,還是自己記一下 基本型別,按值傳遞,傳遞的是值的拷貝,與原值沒有關係,引用型別傳遞的是引用位址,傳遞的是位址,與原值有關係 string 比較特殊,屬於沒有改變自身方法的引用型別,或者 等操作,不會改變原值 第乙個例子 基本型別 void foo int ...

Java 方法使用到底是值傳遞還是引用傳遞

一 定理 1.如果引數是基本型別,傳遞的是基本型別的字面量值的拷貝。2.如果引數是引用型別,傳遞的是該參量所引用的物件在堆中位址值的拷貝 簡單的理解這句話的意思 資料型別是基本型別 值傳遞。資料型別是引用型別 位址拷貝傳遞。1.問 什麼是基本型別,什麼是引用型別?基本型別 byte short in...

引用到底在我們的背後做了什麼

引用到底在我們的背後做了什麼?最近專案 中有用到後值引用,一直想鑽研一翻,但是有兩個基礎的問題始終沒有找到答案,今天在借助度娘的實力後,再稍加研究,終於明白,在此記錄下來,以在以後需要檢視的時候留下痕跡,也給正在學習的朋友相互交流的機會 1.首先我們看一下非常量左值引用,如下 int tmain i...