c語言中:
在函式的執行過程中形參的改變通常不會影響相應的實參(由於傳值呼叫,及函式的封閉性)。
如:#include
void swap(int x, int y)
void main()
程式的輸出為:
10,20
10,20
swap函式並沒有改變實參的值。
利用指標變數,可以改變實參的值。
#include
void swap(int *x, int *y)
void main()
程式的輸出為:
10,20
20,10
c++中:
c++相容c語言,因此上面的示例在c++中有同樣的輸出。為了快速地改變實參的值,c++中引入了引用變數的概念。引用變數並不像其它變數那樣有自己的儲存單元,引用變數只是其它變數的別名。引用變數多用於函式的形參,當函式的形參為引用變數時,在函式體中改變形參也就改變了實參的值。注意其與指標變數在使用上的區別。
#include
void swap(int &x, int &y)
void main()
10,20
20,10
c#中:
c#中沒有了指標變數,但它引入了引用型別的概念。引用型別的實質為是指標型別,它的用法同c++中的引用變數。
如:using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace consoletest
class program
static void swap(int y)
static void main(string args)
", b.i);
swap(b);
console.writeline("", b.i);
//值型別
int m = 5;
console.writeline("", m);
swap(m);
console.writeline("", m); }}
}程式的輸出:56
55可見作為引用型別的類變數做形參時,如果在函式中改變則實參也會改變,而作為值型別的普通整型變數沒有受到影響。
需要注意的是c#中對string類的變數區別對待,這也是為什麼會有stringbuilder類。
C C 中 實參和形參
1 值傳遞 實參是變數,表示式等值。find int x y find z 上面的例子中,z是實參,x是形參。x變z不變。在值傳遞過程中,實參和形參位於記憶體中兩個不同位址中,實參先自己複製一次拷貝,再把拷貝複製給形參。所以,在值傳遞過程中,形參的變化不會對實參有任何的影響。2 位址傳遞 也稱引用傳...
C C 中的實參和形參
今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1 值傳遞 實參是變數,表...
C C 中的實參和形參
函式定義時候寫的引數就是形參呼叫函式,傳遞進取的引數就是實參。舉個例子吧,假設你定義乙個 我要吃糖的函式 void 我要吃糖 string 某種糖 這個就是形參了,因為這裡只是個形式,並沒有指明是給你什麼糖吃,所以是形參。我要吃糖 棉花糖 這個就是實參了,這樣你就吃到棉花糖 實參 了。形參出現在函式...