C C 和C 中如何改變實參

2021-06-01 13:20:15 字數 1235 閱讀 4458

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 某種糖 這個就是形參了,因為這裡只是個形式,並沒有指明是給你什麼糖吃,所以是形參。我要吃糖 棉花糖 這個就是實參了,這樣你就吃到棉花糖 實參 了。形參出現在函式...