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