C 值傳遞和位址傳遞

2021-10-21 00:15:25 字數 825 閱讀 5264

在c++呼叫函式時,會存在值傳遞和位址傳遞,也叫「傳引用和傳值」,正好用到這方面內容,因此做個總結,加深一下理解,如果有不到位或者不準確的地方,請小夥伴們多指教。

1、位址傳遞時,形參和實參是同乙個變數,即使用相同的記憶體空間,二者有相同的位址。而傳值時二者位址不同

2、位址傳遞時,由於沒有新建變數,所以對於類物件引數,不會產生構造和析構。而如果是傳值呼叫,呼叫時會進行構造,退出函式時會進行析構

3、由於位址傳遞使用的是原本實參的位址,所以對引用引數值會做修改,會在退出函式後體現在主調函式中,而傳值呼叫對引數的修改不會影響到主調函式

優點

1.傳參效率高,節省空間(傳遞的是實參的位址,在32位平台下是4位元組)

2.可以通過形參改變外部的實參

缺點

1.安全性低,可讀性低

2.如果不想通過形參改變外部實參時可能會產生***

值傳遞:

優點

1.**可讀性高、較安全

2.在不想通過形參改變外部的實參的場景下,可用傳值

缺點

1.傳參效率低,浪費空間(傳遞的是實參的副本,如果實參特別大,將會浪費大量空間)

2.使用者想要通過形參改變外部實參,做不到

一篇寫的不錯的部落格:還總結了引用和指標,寫的比較詳細,值得學習。

c 值傳遞 位址傳遞 引用傳遞

一.函式引數傳遞方式之一 值傳遞 1 值傳遞的乙個錯誤認識 先看題一中exchg1函式的定義 void exchg1 int x,int y 定義中的x,y變數被稱為exchg1函式的形式引數 問 你認為這個函式是在做什麼呀?答 好像是對引數x,y的值對調吧?請往下看,我想利用這個函式來完成對a,b...

C 值傳遞 位址傳遞 引用傳遞

昨天遇到乙個問題 程式一 char str 256 char sp str visitdepart rs,rs.column,sp static void visitdepart result t rs,int num,char spx note 這個程式表面上看是沒有錯誤的,但是,我用它做了樹的深...

值傳遞 位址傳遞

在呼叫乙個有引數的過程時,首先進行的是形式引數與實在引數的結合,實現呼叫過程的實在引數與被呼叫過程的形式引數之間的資料傳遞。資料傳遞方式有兩種方式 按值傳遞與按位址傳遞。1.按值傳遞引數 按值傳遞引數時,是將實在引數的值複製乙個形式引數中,如果在呼叫過程中改變了形式引數的值,不會影響實在引數本身,即...