什么情況下形參可以改變實參 形參不能改變實參,為什么在用指針傳遞數(shù)值的時候又可以改變呢?
形參不能改變實參,為什么在用指針傳遞數(shù)值的時候又可以改變呢?事實上,一個形式參數(shù)在傳遞一個實際參數(shù)給一個子函數(shù)時定義了一個新的變量,但是這個變量的值等于實際參數(shù)所以不管你在子函數(shù)中如何修改它,調用它的
形參不能改變實參,為什么在用指針傳遞數(shù)值的時候又可以改變呢?
事實上,一個形式參數(shù)在傳遞一個實際參數(shù)給一個子函數(shù)時定義了一個新的變量,但是這個變量的值等于實際參數(shù)
所以不管你在子函數(shù)中如何修改它,調用它的函數(shù)的實際參數(shù)的值將不受影響
當使用指針作為參數(shù)時,因為我們傳遞的不是值本身,而是相應的地址。更改值時,我們會更改該地址中的值,因此可以通過傳遞指針來更改值
如果要修改在子函數(shù)中調用它的函數(shù)的值,可以使用引用函數(shù)
例如
#include<stdio。H>
void fun(int&x)
x=x1
void Main()
{
int a=5
fun(a)
printf(%d,a)
}]是在參數(shù)前面加上一個&
例如,定義INTF(intb),其中B是一個形式參數(shù)。當我們調用F時,我們寫F(a),其中a是一個局部變量。當我們調用F時,它被稱為實際參數(shù)。在f(a)之后,函數(shù)f中參數(shù)B的值由a給出,因此將實際參數(shù)的值傳遞給形式參數(shù)是正確的。形式參數(shù)的值不能傳遞給實際參數(shù)B=1000對參數(shù)a沒有影響。但是,如果函數(shù)定義是指針,則函數(shù)可以更改存儲在指針上的內容,但不能更改指針本身。從這個角度看,一個實際參數(shù)可以通過一個形式參數(shù)來改變
一個實際參數(shù)是一個在程序中分配了內存空間的參數(shù)。可以給它一個特定的值,例如常量、數(shù)組、地址(指針)、變量名、數(shù)組名或表達式。當然,它還包括一個指針變量。R參數(shù)是在編寫被調用函數(shù)時定義的,目的是指定所用自變量的類型和要執(zhí)行的操作。在調用函數(shù)之前,它不會被分配內存空間或給定特定的值。當R調用一個函數(shù)時,形式參數(shù)將被分配一個新的內存空間,實際參數(shù)的值將被“復制”進來,允許它參與被調用函數(shù)中的操作。參數(shù)本身不參與此操作,它只起傳遞值的作用(但在C中可以使用&更改參數(shù)的值)。如果參數(shù)是指針形式,則復制地址。讓我們舉一個非常簡單的例子:output func1=6,B=5,參數(shù)B的值不變。右