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