傳值、傳址、傳引用的區別,哪個更高效?
1.傳值
這種傳遞方式中,實參和形參是兩個不同的地址空間,參數傳遞的實質是將原函數中變量的值,復制到被調用函數形參所在的存儲空間中,這個形參的地址空間在函數執行完畢后,會被回收掉。整個被調用函數對形參的操作,只影響形參對應的地址空間,不影響原來函數中的變量的值,因為這兩個不是同一個存儲空間。
即使形參的值在函數中發生了變化,實參的值也完全不會受到影響,仍為調用前的值。
2.傳址
這種參數傳遞方式中,實參是變量的地址,形參是指針類型的變量,在函數中對指針變量的操作,就是對實參(變量地址)所對應的變量的操作,函數調用結束后,原函數中的變量的值將會發生改變。
被調用函數中對形參指針所指向的地址中內容的任何改變都會影響到實參。
3.傳引用
這種參數傳遞方式中,形參是引用類型變量,其實就是實參的一個別名,在被調用函數中,對引用變量的所有操作等價于對實參的操作,這樣,整個函數執行完畢后,原先的實參的值將會發生改變。
被調函數對形參做的任何操作都影響了主調函數中的實參變量。
4.哪一種更高效?
在內置類型當中三種傳遞方式的效率上都差不多;
在自定義類型當中,傳引用的更高效一些,因為它沒有對形參進行一次拷貝
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
參數
+關注
關注
11文章
1869瀏覽量
33945 -
函數
+關注
關注
3文章
4417瀏覽量
67504 -
C++
+關注
關注
22文章
2124瀏覽量
77112
發布評論請先 登錄
相關推薦
熱點推薦
SIM800C的透傳模式的問題
據,產生>。 如果發送AT+CIPSEND,發送完數據,還要發送0x1a如果發送AT+CIPSEND=10,就說可以發送10個字節的數據。 這和我理解的透傳有區別,我理解的應該完全透傳,不用發
發表于 10-24 18:14
JavaScript讓HTML靜態頁面傳值的方法
JavaScript讓HTML靜態頁面傳值的方法有四種:1、JavaScript通過URL傳值。2、JavaScript通過Cookie傳
發表于 01-09 15:24
?7216次閱讀
為什么需要無線回傳 Wi-Fi回傳有哪些應用
你聽過回傳么? 回傳是指網絡中的一段傳輸路徑,用于將兩個網絡連接起來,數據可以通過回傳網絡,在不同的網絡間往返傳輸。根據網絡介質的不同,可以分為有線回傳(光纖)和無線回
網絡透傳和非透傳是什么區別是什么
透傳:適用簡易、立即的數據傳輸,留意數據的完整性和低延遲。非透傳:適用必須進行數據解決優化的狀況,提供良好的可靠性和效果。
在挑選傳輸技術時,務必根據實際的業務需求、數據種類、安全規定和傳輸效率等要素開展考量。
傳值、傳址、傳引用的區別,哪個更高效?
評論