卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

c語言返回值怎么理解 既然C語言函數(shù)的局部變量會被釋放,那為什么函數(shù)還可以把它return返回呢?

既然C語言函數(shù)的局部變量會被釋放,那為什么函數(shù)還可以把它return返回呢?看了下面兄弟的回信,我們只能說他們一半是對的。真正的原因是abi(應(yīng)用程序二進制接口)。ABI定義了與系統(tǒng)交互的細節(jié),如數(shù)據(jù)

既然C語言函數(shù)的局部變量會被釋放,那為什么函數(shù)還可以把它return返回呢?

看了下面兄弟的回信,我們只能說他們一半是對的。

真正的原因是abi(應(yīng)用程序二進制接口)。

ABI定義了與系統(tǒng)交互的細節(jié),如數(shù)據(jù)類型、大小和對齊方式;調(diào)用約定(控制函數(shù)的參數(shù)傳遞方向、可變長度處理、堆棧清理體以及如何接受返回值等);系統(tǒng)調(diào)用的編碼以及應(yīng)用程序如何對操作系統(tǒng)進行系統(tǒng)調(diào)用系統(tǒng);以及采用完整ABI操作系統(tǒng)基本格式、程序庫等的第二代對象文件。完整的ABI,如英特爾二進制兼容標準(IBCs),允許支持它的操作系統(tǒng)上的程序在支持此ABI的其他操作系統(tǒng)上運行,而無需修改。

其他ABI標準化細節(jié)包括C名稱修改和同一平臺上編譯器之間的調(diào)用約定,但不包括跨平臺兼容性。

至于下面兄弟提到的eax save返回值,這只是X86的ABI規(guī)范。在其他CPU架構(gòu)平臺(如PowerPC)中,實現(xiàn)是不同的!--PowerPC,返回值存儲在R3寄存器中

在一般的C教材中,有比較詳細的介紹。返回值的形式取決于函數(shù)的類型。返回值可以是數(shù)據(jù)、指針、字符串等,在調(diào)用該函數(shù)時,可以根據(jù)返回值判斷函數(shù)是否正確執(zhí)行,也可以得到所需的信息。舉個例子,

intadd(intx,inty)

{

inta;

a=x y;

returna

]這個函數(shù)返回兩個數(shù)字相加的結(jié)果。如果在函數(shù)中調(diào)用此函數(shù),則可以返回兩個數(shù)據(jù)之和,例如

intget。Add()

{

intb;

B=Add(1,2);

printf(%dn“)

return0

}]調(diào)用Add函數(shù)時,函數(shù)返回a,調(diào)用時得到Add指定B=Add();然后a返回B,這是所需12的結(jié)果。在get中,如果add函數(shù)的返回值為0,則可以根據(jù)函數(shù)的返回值判斷函數(shù)是否執(zhí)行成功,例如

intmain()

{

INTC

C=get Add()

if(C==0)

{

printf(“OKn”)}

else

{

printf(“errorn”)}

這里,您知道get Add的返回值是0。如果調(diào)用此函數(shù)的返回值不為0,則此函數(shù)執(zhí)行時出錯。

當然,函數(shù)的返回值也可以是指針,它包含您想要的內(nèi)容。需要注意的是,有些函數(shù)沒有返回值,例如,void函數(shù)沒有返回值。

我只是舉個例子來說明這個問題。你需要自己找到細節(jié)。