c語言函數(shù)的調(diào)用 函數(shù)調(diào)用時參數(shù)傳遞有哪幾種方式?
函數(shù)調(diào)用時參數(shù)傳遞有哪幾種方式?函數(shù)參數(shù)傳遞:調(diào)用函數(shù)時,應(yīng)填寫形式參數(shù)個數(shù)相同的實際參數(shù)。在程序運行過程中,實際參數(shù)將參數(shù)值轉(zhuǎn)換為形式參數(shù),即函數(shù)參數(shù)轉(zhuǎn)換。函數(shù)參數(shù)傳遞有三種:1。價值轉(zhuǎn)移1。通過值
函數(shù)調(diào)用時參數(shù)傳遞有哪幾種方式?
函數(shù)參數(shù)傳遞:調(diào)用函數(shù)時,應(yīng)填寫形式參數(shù)個數(shù)相同的實際參數(shù)。在程序運行過程中,實際參數(shù)將參數(shù)值轉(zhuǎn)換為形式參數(shù),即函數(shù)參數(shù)轉(zhuǎn)換。函數(shù)參數(shù)傳遞有三種:1。價值轉(zhuǎn)移1。通過值傳遞,實際參數(shù)的內(nèi)容實際上被復(fù)制到形式參數(shù)。實際參數(shù)和形式參數(shù)存儲在兩個不同的內(nèi)存空間中。如果形式參數(shù)是類的對象,則每次通過值傳遞調(diào)用類構(gòu)造函數(shù)來構(gòu)造對象是低效的。2、 指針傳遞(地址傳遞)1。傳遞指針時,形式參數(shù)是指針變量,實際參數(shù)是變量或指針變量的地址。調(diào)用函數(shù)時,形式參數(shù)指向?qū)嶋H參數(shù)的地址。在指針傳遞中,實際參數(shù)的地址空間的內(nèi)容可以通過函數(shù)體中的形式參數(shù)指針來改變。3、 通過參考1。引用實際上是變量的別名,它與變量具有相同的內(nèi)存空間;2。參數(shù)將變量傳遞給參數(shù)引用,相當(dāng)于參數(shù)變量的別名,參數(shù)的修改是直接修改參數(shù)。類的引用對象經(jīng)常被用作類的成員函數(shù)中的參數(shù),這大大提高了代碼的效率。
調(diào)用函數(shù)和被調(diào)用函數(shù)之間的參數(shù)傳遞是通過什么來傳的?
例如:
function int fun(int a,int b){return a,b},call int x,y x=5 y=fun(x,90)
執(zhí)行function call語句時,系統(tǒng)首先將第二個參數(shù)90推入堆棧,然后取出變量x中存儲的值,推入堆棧,保存在字段中,并將其轉(zhuǎn)移到趣味程序中運行。在fun程序開始時,首先放入堆棧的數(shù)字被視為變量B,然后堆棧中的第一個參數(shù)被視為變量a,用于fun程序。執(zhí)行完fun函數(shù)后,計算出a和B的值,取出放入專用寄存器作為函數(shù)返回值,用棧中存儲的字段數(shù)據(jù)返回調(diào)用程序的調(diào)用點,丟棄棧中的字段數(shù)據(jù)和調(diào)用中按下的參數(shù),并將寄存器中數(shù)字的值賦給變量y。