傳值、傳址、傳引用的區(qū)別,哪個更高效?
1.傳值
這種傳遞方式中,實參和形參是兩個不同的地址空間,參數(shù)傳遞的實質是將原函數(shù)中變量的值,復制到被調用函數(shù)形參所在的存儲空間中,這個形參的地址空間在函數(shù)執(zhí)行完畢后,會被回收掉。整個被調用函數(shù)對形參的操作,只影響形參對應的地址空間,不影響原來函數(shù)中的變量的值,因為這兩個不是同一個存儲空間。
即使形參的值在函數(shù)中發(fā)生了變化,實參的值也完全不會受到影響,仍為調用前的值。
2.傳址
這種參數(shù)傳遞方式中,實參是變量的地址,形參是指針類型的變量,在函數(shù)中對指針變量的操作,就是對實參(變量地址)所對應的變量的操作,函數(shù)調用結束后,原函數(shù)中的變量的值將會發(fā)生改變。
被調用函數(shù)中對形參指針所指向的地址中內容的任何改變都會影響到實參。
3.傳引用
這種參數(shù)傳遞方式中,形參是引用類型變量,其實就是實參的一個別名,在被調用函數(shù)中,對引用變量的所有操作等價于對實參的操作,這樣,整個函數(shù)執(zhí)行完畢后,原先的實參的值將會發(fā)生改變。
被調函數(shù)對形參做的任何操作都影響了主調函數(shù)中的實參變量。
4.哪一種更高效?
在內置類型當中三種傳遞方式的效率上都差不多;
在自定義類型當中,傳引用的更高效一些,因為它沒有對形參進行一次拷貝
-
參數(shù)
+關注
關注
11文章
1838瀏覽量
32247 -
函數(shù)
+關注
關注
3文章
4332瀏覽量
62666 -
C++
+關注
關注
22文章
2109瀏覽量
73678
發(fā)布評論請先 登錄
相關推薦
評論