c 實參形參

2021-10-03 03:18:28 字數 1145 閱讀 9037

形參(形式引數)

在函式定義**現的引數可以看做是乙個佔位符,它沒有資料,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數,簡稱形參。實參(實際引數)

函式被呼叫時給出的引數包含了實實在在的資料,會被函式內部的**使用,所以稱為實際引數,簡稱實參。

形參和實參的功能是傳遞資料,發生函式呼叫時,實參的值會傳遞給形參。

當形參是引用型別時,對應的實參被引用傳遞,引用形參是對應的實參的別名。

形參和實參的區別和聯絡

形參變數只有在函式被呼叫時才會分配記憶體,呼叫結束後,立刻釋放記憶體,所以形參變數只有在函式內部有效,不能在函式外部使用。

實參可以是常量、變數、表示式、函式等,無論實參是何種型別的資料,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。

實參和形參在數量上、型別上、順序上必須嚴格一致,否則會發生「型別不匹配」的錯誤。當然,如果能夠進行自動型別轉換,或者進行了強制型別轉換,那麼實參型別也可以不同於形參型別。

函式呼叫中發生的資料傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參;換句話說,一旦完成資料的傳遞,實參和形參就再也沒有瓜葛了,所以,在函式呼叫過程中,形參的值發生改變並不會影響實參。

按值傳遞:在呼叫函式中將原函式的值拷貝乙份過去被呼叫的函式,在被呼叫函式中對該值的修改不會影響原函式的值。

按位址傳遞:在呼叫函式的時候將原函式的值所在的位址拷貝乙份過去,被呼叫函式對這個位址所作的修改會影響原來的值。

1、按值傳遞

實參是變數,表示式等值。

find(int x){} y= find(z);

上面的例子中,z是實參,x是形參。x變z不變。

在值傳遞過程中,實參和形參位於記憶體中兩個不同位址中,實參先自己複製一次拷貝,再把拷貝複製給形參。所以,在值傳遞過程中,形參的變化不會對實參有任何的影響。

2、位址傳遞(也稱引用傳遞)

實參是指標。

在函式呼叫的時候,實參傳遞給你的是指標位址,位址一樣也就意味著實參和形參是一樣的,當你的形參發生改變時,實參也會發生改變。

find(int

&x)y=

find

(z);

上面的例子中,z是實參,x是形參。z隨x而改變。

c 實參和形參

c c 中的實參和形參 今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1...

C 形參和實參

今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裡只有乙個引數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年c 的人來說,真的深深感覺對不起自己對不起c 老師 t。t 我覺得只要明白了值傳遞和位址傳遞,就應該能明白形參和實參的具體工作細節了。1 值傳遞 實參是變數,表...

java 形參 實參

實參 直接值傳遞 string 八大基礎資料型別 形參是定義方法的時候,該方法所攜帶的引數,不如說現在有乙個方法 public void printinfo string info 此處info就是乙個形參,它是string型別的。實參是你在呼叫方法的時候,給這個方法傳遞的引數值,比如說有這麼乙個語...