python函數(shù)沒(méi)有return 沒(méi)有return語(yǔ)句的函數(shù)將返回什么?
沒(méi)有return語(yǔ)句的函數(shù)將返回什么?沒(méi)有retrun的語(yǔ)句不返回參數(shù)。函數(shù)用于實(shí)現(xiàn)函數(shù),并非所有函數(shù)都需要返回值。例如,每個(gè)程序員學(xué)習(xí)的helloworld程序在執(zhí)行該程序以打印字符串語(yǔ)句時(shí)就完成了
沒(méi)有return語(yǔ)句的函數(shù)將返回什么?
沒(méi)有retrun的語(yǔ)句不返回參數(shù)。
函數(shù)用于實(shí)現(xiàn)函數(shù),并非所有函數(shù)都需要返回值。例如,每個(gè)程序員學(xué)習(xí)的helloworld程序在執(zhí)行該程序以打印字符串語(yǔ)句時(shí)就完成了。程序在程序內(nèi)部執(zhí)行解構(gòu)操作,內(nèi)存空間被破壞。
在強(qiáng)類型語(yǔ)言中,如果沒(méi)有返回函數(shù),則需要聲明void類型,這意味著不返回任何參數(shù)。類似地,如果有返回值,則需要根據(jù)返回值類型聲明函數(shù)類型。
調(diào)用函數(shù)時(shí)沒(méi)有return語(yǔ)句函數(shù)有返回值嗎?
No return語(yǔ)句沒(méi)有返回值。Return語(yǔ)句是函數(shù)的返回值語(yǔ)句。如果不編寫return語(yǔ)句,則表示函數(shù)是一個(gè)不能返回的void類型。如果有return語(yǔ)句,它可以是void或其他類型(如果在直接return中添加分號(hào),則表示它是void類型的返回值)。
既然C語(yǔ)言函數(shù)的局部變量會(huì)被釋放,那為什么函數(shù)還可以把它return返回呢?
看了下面兄弟的回信,我們只能說(shuō)他們一半是對(duì)的。
真正的原因是abi(應(yīng)用程序二進(jìn)制接口)。
ABI定義了與系統(tǒng)交互的細(xì)節(jié),如數(shù)據(jù)類型、大小和對(duì)齊方式;調(diào)用約定(控制函數(shù)的參數(shù)傳遞方向、可變長(zhǎng)度處理、堆棧清理體以及如何接受返回值等);系統(tǒng)調(diào)用的編碼以及應(yīng)用程序如何對(duì)操作系統(tǒng)進(jìn)行系統(tǒng)調(diào)用系統(tǒng);以及采用完整ABI操作系統(tǒng)基本格式、程序庫(kù)等的第二代對(duì)象文件。完整的ABI,如英特爾二進(jìn)制兼容標(biāo)準(zhǔn)(IBCs),允許支持它的操作系統(tǒng)上的程序在支持此ABI的其他操作系統(tǒng)上運(yùn)行,而無(wú)需修改。
其他ABI標(biāo)準(zhǔn)化細(xì)節(jié)包括C名稱修改和同一平臺(tái)上編譯器之間的調(diào)用約定,但不包括跨平臺(tái)兼容性。
至于下面兄弟提到的eax save返回值,這只是X86的ABI規(guī)范。在其他CPU架構(gòu)平臺(tái)(如PowerPC)中,實(shí)現(xiàn)是不同的!--在PowerPC中,返回值存儲(chǔ)在R3寄存器中