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的出現有效避免了這種情況的出現,只需拷貝一次就夠了。
C C 中的實參和形參
今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1 值傳遞 實參是變數,表...
C C 中的實參和形參
函式定義時候寫的引數就是形參呼叫函式,傳遞進取的引數就是實參。舉個例子吧,假設你定義乙個 我要吃糖的函式 void 我要吃糖 string 某種糖 這個就是形參了,因為這裡只是個形式,並沒有指明是給你什麼糖吃,所以是形參。我要吃糖 棉花糖 這個就是實參了,這樣你就吃到棉花糖 實參 了。形參出現在函式...
C C 中的實參和形參
今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1 值傳遞 實參是變數,表...