C/C++中的實參和形參

adong發表於2020-12-06

引用別人的博文,基礎不好記錄一下,看看以後會不會寫dll給PHP用。

我覺得只要明白了值傳遞和地址傳遞,就應該能明白形參和實參的具體工作細節了。

1、值傳遞

實參是變數,表示式等值。

find(int x){}

y= find(z)

上面的例子中,z是實參,x是形參。x變z不變。

在值傳遞過程中,實參和形參位於記憶體中兩個不同地址中,實參先自己複製一次複製,再把複製複製給形參。所以,在值傳遞過程中,形參的變化不會對實參有任何的影響。

2、地址傳遞(也稱引用傳遞)

實參是指標。

在函式呼叫的時候,實參傳遞給你的是指標地址,地址一樣也就意味著實參和形參是一樣的,當你的形參發生改變時,實參也會發生改變。

find(int  &x){}

y= find(z);

上面的例子中,z是實參,x是形參。z隨x而改變。

3、const引用傳遞

find(const int  &x){}

y= find(z);

上面的例子中,z是實參,x是形參。z不隨x而改變。

有人就會問了,你這樣做不是和值傳遞一樣的麼?NO!

仔細觀察就會發現,在值傳遞中要進行兩次複製,浪費記憶體資源是相當可恥的,const的出現有效避免了這種情況的出現,只需複製一次就夠了
本作品採用《CC 協議》,轉載必須註明作者和本文連結
寫程式碼是一件趣事。

相關文章