形參是函數(shù)聲明和定義的時(shí)候跟的參數(shù),實(shí)參是調(diào)用函數(shù)時(shí)傳進(jìn)去的參數(shù)。形參只是對(duì)參數(shù)進(jìn)行類型說(shuō)明,函數(shù)沒有被調(diào)用時(shí),形參不占用內(nèi)存;只有在調(diào)用時(shí),才會(huì)為形參分配內(nèi)存,將實(shí)參傳遞進(jìn)去,即用實(shí)參對(duì)形參進(jìn)行初始化。 函數(shù)的參數(shù)傳遞有兩種方式:值傳遞和引用傳遞。 值傳遞,就是函數(shù)調(diào)用時(shí),給形參分配內(nèi)存空間,利用實(shí)參對(duì)形參進(jìn)行賦值。之后的執(zhí)行過(guò)程中,形參和實(shí)參就脫離關(guān)系,互不影響。也就是說(shuō),用實(shí)參初始化形參之后,形參在子函數(shù)內(nèi)如何變化,與實(shí)參無(wú)關(guān)。子函數(shù)返回或結(jié)束后,調(diào)用函數(shù)中的實(shí)參的值,并未因?yàn)橘x值給形參,形參在子函數(shù)中改變而改變。 引用傳遞,就是利用引用類型的特點(diǎn),來(lái)滿足我們對(duì)于達(dá)到在被調(diào)函數(shù)中對(duì)形參的操作,等同于對(duì)實(shí)參的操作的效果的需要。引用是一種特殊類型的變量,實(shí)際上是另一個(gè)變量的別名,使用引用名和使用原來(lái)的變量名來(lái)訪問(wèn)變量是等效的。引用在做為形參時(shí),不需要對(duì)其進(jìn)行初始化,這是因?yàn)椴⒉粸樾螀⒎峙鋬?nèi)存。其他情況時(shí),在聲明引用變量時(shí),要對(duì)其進(jìn)行初始化,使它指向一個(gè)實(shí)際的對(duì)象。一旦引用被初始化之后,就不能指向其他對(duì)象。利用引用的特點(diǎn),可以將形參設(shè)置為引用類型,這樣函數(shù)調(diào)用時(shí),實(shí)參對(duì)其進(jìn)行初始化后,被調(diào)函數(shù)中任何對(duì)形參的操作,都相當(dāng)于對(duì)調(diào)用函數(shù)中的實(shí)參的操作。 值調(diào)用和參數(shù)調(diào)用的區(qū)別,只在于函數(shù)聲明和定義時(shí),形參的寫法不同,主調(diào)函數(shù)調(diào)用被調(diào)函數(shù)時(shí)的調(diào)用語(yǔ)句是一樣的。 補(bǔ)充:讀到拷貝構(gòu)造函數(shù)一節(jié)時(shí),對(duì)參數(shù)傳遞的兩種方式有了新的理解:如果在子函數(shù)內(nèi)部,形參的值不被修改,那么就可以采用值傳遞的方式;如果子函數(shù)內(nèi)部,有對(duì)形參的修改操作,那么就必須采用引用傳遞方式來(lái)進(jìn)行參數(shù)傳遞。 |
|