C 值傳遞和引用傳遞

2022-05-18 00:53:54 字數 1574 閱讀 9246

概念

在定義函式時函式括號中的變數名成為形式引數,簡稱形參或虛擬引數;

在主調函式中呼叫乙個函式時,該函式括號中的引數名稱為實際引數,簡稱實參,實參可以是常量、變數或表示式。

注意:

c語言中實參和形參之間的資料傳遞是單向的值傳遞。

被呼叫函式的形參只有函式被呼叫時才會臨時分配儲存單元,一旦呼叫結束占用的記憶體便會被釋放。

值傳遞中包括值傳遞和指標傳遞(位址值),傳遞的都是實參的乙個拷貝。

void exchange(int x, int y)

void exchange1(int* x, int *y)

void exchange2(int &x, int &y)

int main()

傳遞的引數是實參的副本主調函式向呼叫函式傳遞引數實際上只是將實參的拷貝(即臨時副本)傳遞給了被呼叫函式,並不是實參本身,這樣被調函式不能直接修改主調函式中變數的值,而只能修改其私有的臨時副本的值。

x:3,y:5

&x:cff89c,&y:cff890

------------

值傳遞x:3,y:5

&x:cff7a0,&y:cff7a4

------------

x:5,y:3

&x:cff7a0,&y:cff7a4

實參x:3,y:5

&x:cff89c,&y:cff890

x:3,y:5

&x:cff89c,&y:cff890

------------

指標傳遞

*px:3,*py:5

px:cff89c,py:cff890

&px:cff7a0,&py:cff7a4

------------

*x:5,*y:3

x:cff89c,y:cff890

&x:cff7a0,&y:cff7a4

實參*x:5,*y:3

x:cff89c,y:cff890

&x:cff884,&y:cff884

對引用的操作等於對其指定的物件進行操作,當將實參傳遞給形參時,形參就指向了實參(形參與實參同義,是它的乙個別名)

引用傳遞過程中,被調函式的形式引數雖然同樣作為區域性變數在棧中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的位址。被調函式對形參的任何操作都被處理成間接定址,即通過棧中存放的位址訪問主調函式中的實參變數。正因為如此,被調函式對形參做的任何操作都影響了主調函式中的實參變數。

引用傳遞

x:5,y:3

&x:cff89c,&y:cff890

------------

x:3,y:5

&x:cff89c,&y:cff890

實參x:3,y:5

&x:cff89c,&y:cff890

參考

值傳遞和引用傳遞-----函式引數傳遞的兩種方式

C 值傳遞 指標傳遞和引用傳遞(C )

一 基本介紹 1 值傳遞 形參是實參的副本 複製 拷貝 形參值的改變不會影響實參的值,這種方式用的最多。2 指標傳遞 形參是指標型別,形參作指標運算後指向的就是實參,所以會影響實參的值,這種方式用的也很多。引數。這種方式用的也蠻多的。引用只是乙個別名 二 示例 1 值傳遞 1 include voi...

值傳遞和引用傳遞

幾乎每種語言都有值傳遞和引用傳遞.下面是我的一些曲解,只講現象,不涉及到任何的原理,主要是鬧著玩的.a 新交了個女朋友b.有一天他女朋友b看見a在吃冰激凌,b想吃,但是a是個 座有點小潔癖,不想讓b吃,於是給b買了個新的冰激凌說你吃這個吧,別碰我嘴裡這個.這就是值傳遞.a和b的值沒有任何關係,他們一...

值傳遞和引用傳遞

1.什麼是值傳遞和引用傳遞 值傳遞 方法呼叫時,實際引數的值copy乙份傳遞給形式引數,此時,有兩個相等的數值分別儲存於不同的記憶體位址上,因此,後面的方法中都是對形參位址上的數值進行修改。引用傳遞 方法呼叫時,實際引數的值 也就是位址 copy乙份傳遞給形式引數,此時,形參和實參的引用都指向同一儲...