c#
中有兩種型別的資料,一種為值型別;另一種為引用型別。
值型別:
int、
char
、float
、long
、bool
、double
、struct、enum、
short
、byte
、decimal
、sbyte
、uint
、ulong
、ushort等
引用型別:string、class、
inte***ce
、delegate
、object等
他們最大的區別就是儲存的位置不同,前者值型別儲存在記憶體的棧,後者儲存在記憶體堆中,棧中的記憶體不需要自己就能**,堆中的資料需要
.net framework
自己的記憶體清理機制進行**。
實參傳遞的是值
,形參傳遞的是位址。
實參傳遞打個比方
:我電腦有乙個檔案,你用
u盤來拷貝我的這個檔案
,那麼拷貝後你把檔案放在你的電腦裡進行任何的修改,都不會影響到我電腦裡這個檔案的內容
-------
它們占用的是兩個不同的記憶體空間(你的電腦和我的電腦)
.形參傳遞打個比方
,比如你電腦桌面上有乙個
txt檔案
,然後你再建立這個
txt檔案的快捷方式
,接著你對這個快捷方式的
txt檔案內容做任何修改
,那麼原來的
txt檔案
內容也會同時被更改
--------
他們占用的是同乙個記憶體空間(你的電腦)
.舉個例子:
對於這個函式void func(int n)
這屬於值傳遞,呼叫func(i)的時候,會把i拷貝乙個副本,然後把這個副本傳給func函式。
func函式裡面的n,和外面的i,就完全沒有關係了。所以修改n不影響i
void func(ref int n)
這屬於引用傳遞,呼叫func(ref i)的時候,直接把i的位址傳給func函式。
func函式裡面的n,和外面的i,完全就是同乙個位址的同乙個變數
ref是有進有出,out是只進不出。
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 某種糖 這個就是形參了,因為這裡只是個形式,並沒有指明是給你什麼糖吃,所以是形參。我要吃糖 棉花糖 這個就是實參了,這樣你就吃到棉花糖 實參 了。形參出現在函式...