今天在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...