形參和實參,以及在記憶體中的分配

2021-07-27 05:23:19 字數 1201 閱讀 6110

c#

中有兩種型別的資料,一種為值型別;另一種為引用型別。

值型別:

int、

char

、float

、long

、bool

、double

structenum

short

、byte

、decimal

、sbyte

、uint

、ulong

、ushort等

引用型別:stringclass

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