形參和實(shí)參舉例 什么是形參和實(shí)參?參數(shù)傳遞的方式有哪些?
什么是形參和實(shí)參?參數(shù)傳遞的方式有哪些?通過比較數(shù)學(xué)中的函數(shù),例如,f(x)=2x 10F(x)是返回值,x是形式參數(shù),當(dāng)你給x賦值5時(shí),實(shí)際參數(shù)是5,當(dāng)你賦值10時(shí),實(shí)際參數(shù)是10。因此,一般來說,
什么是形參和實(shí)參?參數(shù)傳遞的方式有哪些?
通過比較數(shù)學(xué)中的函數(shù),例如,f(x)=2x 10F(x)是返回值,x是形式參數(shù),當(dāng)你給x賦值5時(shí),實(shí)際參數(shù)是5,當(dāng)你賦值10時(shí),實(shí)際參數(shù)是10。因此,一般來說,實(shí)際參數(shù)是調(diào)用函數(shù)時(shí)對(duì)形式參數(shù)的賦值,實(shí)質(zhì)上參數(shù)傳遞的方式只有一種,即值傳遞。地址轉(zhuǎn)移和引用轉(zhuǎn)移都是價(jià)值轉(zhuǎn)移的概念轉(zhuǎn)換。例如,當(dāng)調(diào)用void Calc(int*PTR)時(shí),它看起來是地址傳輸,但對(duì)于PTR,它的值被初始化為實(shí)際參數(shù),因此它是值傳輸。理解它最基本的方法是,從記憶的角度看,給變量賦值無非是在某個(gè)地方的內(nèi)存中寫一個(gè)值,所以需要注意目標(biāo)內(nèi)存是否發(fā)生了變化。例如,當(dāng)您將一個(gè)值寫入指針參數(shù)所指向的內(nèi)存時(shí),您將寫入一個(gè)實(shí)際參數(shù)所指向的內(nèi)存,這就是地址傳輸?shù)谋举|(zhì)。
函數(shù)的實(shí)參傳遞到形參的兩種方式?
有兩種方法可以將函數(shù)的實(shí)際參數(shù)傳遞給形式參數(shù):值傳遞和引用傳遞。
傳遞值是存儲(chǔ)值。內(nèi)存地址通過引用傳遞。修改后,與存儲(chǔ)器地址相對(duì)應(yīng)的值將改變。
C語言規(guī)定,調(diào)用一個(gè)函數(shù)時(shí),實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞方式是什么?
形式參數(shù)是函數(shù)定義中的一種占位符。實(shí)際參數(shù)是其中的實(shí)際變量值或常量。調(diào)用函數(shù)時(shí),實(shí)際參數(shù)值將自動(dòng)傳遞給形式參數(shù)變量。指針更復(fù)雜。是變量的地址。如果參數(shù)類型是指針類型,則必須傳遞參數(shù)變量的地址。當(dāng)然,在函數(shù)中也是對(duì)參數(shù)變量的間接引用。
例如
void f(int*P)//形式參數(shù)是指針型變量
下面是調(diào)用形式
f&A//調(diào)用函數(shù),實(shí)際參數(shù)是變量a的地址
值傳遞形參不影響實(shí)參,那值傳遞的作用是啥?
僅憑名稱很難理解“形式參數(shù)”和“實(shí)際參數(shù)”的含義。它們都出現(xiàn)在函數(shù)的定義和調(diào)用中,即服務(wù)于函數(shù)。然后從功能生命周期的角度分析它們?yōu)槭裁磿?huì)以這種方式存在。
通常,函數(shù)存儲(chǔ)在ROM中。當(dāng)函數(shù)被調(diào)用(運(yùn)行)時(shí),它將被傳輸?shù)絩am中運(yùn)行。當(dāng)調(diào)用任何函數(shù)時(shí),都是為了實(shí)現(xiàn)一定的操作函數(shù)。一般函數(shù)在運(yùn)算后需要有運(yùn)算數(shù)據(jù)(即實(shí)際參數(shù)的數(shù)據(jù))和運(yùn)算結(jié)果(即返回值)。函數(shù)運(yùn)行時(shí),為什么不直接操作參數(shù),而是把參數(shù)的數(shù)據(jù)傳給參數(shù),然后再操作參數(shù)呢?
這是為了“低耦合”。編程思想中有句俗語“低耦合,高內(nèi)聚”。也就是說,職能之間的關(guān)系應(yīng)該盡可能簡(jiǎn)單明了,沒有歧義。這是為了提高程序的可讀性和可維護(hù)性。在函數(shù)運(yùn)行時(shí),它應(yīng)用于一個(gè)RAM區(qū)域,其中還包括形式參數(shù)的空間,并將實(shí)際參數(shù)的數(shù)據(jù)提供給形式參數(shù)。
函數(shù)只操作形式參數(shù),不操作實(shí)際參數(shù)。這樣,函數(shù)和實(shí)際參數(shù)之間的關(guān)系就被清除了。當(dāng)函數(shù)死亡(從RAM中釋放)時(shí),實(shí)際參數(shù)之間的關(guān)系就不再需要了。調(diào)用函數(shù)時(shí)應(yīng)用的ram可以直接清除,簡(jiǎn)單高效。同時(shí),返回值與此類似。
形式參數(shù)是函數(shù)的入口,返回值是函數(shù)的出口。該函數(shù)只使用自己的內(nèi)部空間運(yùn)行,與其他數(shù)據(jù)無關(guān),大大提高了“低耦合”。這就是形式參數(shù)和實(shí)際參數(shù)的含義。
解釋函數(shù)形參和實(shí)參之間的傳遞方式?
函數(shù)實(shí)參與形式參數(shù)的數(shù)據(jù)傳輸方式為(值傳輸)。在C語言中,數(shù)據(jù)傳輸方式包括值傳輸和引用傳輸。值傳遞:值傳遞實(shí)際上是將實(shí)際參數(shù)的值賦給行參數(shù),相當(dāng)于復(fù)制。那么row參數(shù)的修改將不會(huì)影響實(shí)際參數(shù)的值。引用傳遞:實(shí)際上,它是傳遞值的一種特殊方式。它只傳遞地址,而不是普通的任務(wù)。傳遞地址后,實(shí)際參數(shù)和行參數(shù)都指向同一個(gè)對(duì)象,因此形式參數(shù)的修改會(huì)影響實(shí)際參數(shù)。將值傳遞到擴(kuò)展數(shù)據(jù)的調(diào)用中只使用實(shí)際參數(shù)的值。在值傳遞機(jī)制中,形式參數(shù)是一個(gè)局部變量,其初始值是相應(yīng)參數(shù)的值。在引用調(diào)用機(jī)制中,參數(shù)的地址被傳遞給參數(shù)。表面上,參數(shù)被參數(shù)變量替換,因此參數(shù)的任何更改實(shí)際上都發(fā)生在參數(shù)變量上。引用傳遞是將變量的內(nèi)存地址傳遞給方法。當(dāng)一個(gè)方法操作一個(gè)變量時(shí),它會(huì)找到存儲(chǔ)在地址中的變量并對(duì)其進(jìn)行操作。它將影響原始變量??梢酝ㄟ^引用將變量傳遞給函數(shù),以便函數(shù)可以修改其參數(shù)的值。
c語言函數(shù)調(diào)用時(shí),實(shí)參和形參是如何傳遞的?什么時(shí)候要寫指針型變量?求高手指點(diǎn)~?
直接傳遞實(shí)際參數(shù),這將在內(nèi)存中產(chǎn)生更多的物理空間。
形式參數(shù)是傳遞的地址,不會(huì)在內(nèi)存中產(chǎn)生更多的物理空間。
通常在傳遞參數(shù)或進(jìn)入數(shù)組時(shí)寫入指針變量