值傳遞(Call by Value):這種方式下,函數(shù)接收的是調(diào)用時(shí)提供參數(shù)(實(shí)參)的一個(gè)副本(形參)。因此,在函數(shù)體內(nèi)對(duì)形參的任何修改都不會(huì)影響到原始的數(shù)據(jù)(實(shí)參),因?yàn)樗鼈兪谴鎯?chǔ)在內(nèi)存中的不同位置。
地址傳遞(Call by Address,通常通過指針實(shí)現(xiàn)):此方式下,傳遞給函數(shù)的是實(shí)參的內(nèi)存地址,而不是其實(shí)際值。函數(shù)內(nèi)部通過接收到的地址(以指針形式)來(lái)訪問和修改原始數(shù)據(jù)。因此,函數(shù)內(nèi)對(duì)通過指針訪問的數(shù)據(jù)的修改會(huì)直接影響到原始實(shí)參的值。
通過指針傳遞(Call by Pointer):這實(shí)際上是地址傳遞的一種具體實(shí)現(xiàn)形式,直接明確地將實(shí)參的地址(以指針的形式)作為參數(shù)傳遞給函數(shù)。函數(shù)內(nèi)部使用這些指針來(lái)直接訪問和修改實(shí)參指向的數(shù)據(jù)。
數(shù)組傳遞:當(dāng)數(shù)組作為函數(shù)參數(shù)時(shí),實(shí)際上傳遞的是數(shù)組首元素的地址。在函數(shù)內(nèi)部,這個(gè)地址被當(dāng)作指向數(shù)組首元素的指針來(lái)處理,允許通過下標(biāo)訪問整個(gè)數(shù)組的元素。因此,雖然傳遞的是地址,但形式上看起來(lái)像是傳遞了數(shù)組本身,實(shí)際上遵循的仍然是值傳遞的原則(傳遞的是地址值)。
返回值傳遞:函數(shù)調(diào)用完成后,可以返回一個(gè)值給調(diào)用者。這個(gè)返回值可以作為另一個(gè)函數(shù)調(diào)用的參數(shù)。雖然這涉及到值的傳遞,但它發(fā)生在函數(shù)調(diào)用完成后,與函數(shù)內(nèi)部參數(shù)如何傳遞有所不同。