既然C語言函數的局部變量會被釋放,那為什么函數還可以把它return返回呢?看了下面兄弟的回信,我們只能說他們一半是對的。

真正的原因是abi(應用程序二進制接口)。
ABI定義了與系統交互的細節,如數據類型、大小和對齊方式;調用約定(控制函數的參數傳遞方向、可變長度處理、堆棧清理體以及如何接受返回值等);系統調用的編碼以及應用程序如何對操作系統進行系統調用系統;以及采用完整ABI操作系統基本格式、程序庫等的第二代對象文件。完整的ABI,如英特爾二進制兼容標準(IBCs),允許支持它的操作系統上的程序在支持此ABI的其他操作系統上運行,而無需修改。
其他ABI標準化細節包括C名稱修改和同一平臺上編譯器之間的調用約定,但不包括跨平臺兼容性。
至于下面兄弟提到的eaxsave返回值,這只是X86的ABI規范。在其他CPU架構平臺(如PowerPC)中,實現是不同的!--在PowerPC中,返回值存儲在R3寄存器中,主函數的return語句的返回值返回給操作系統。根據C/C標準,返回0;表示程序正常退出。其他值表示錯誤退出。此返回值適用于操作系統。
主函數的return語句的返回值到底返回哪里?在通用C教材中,有更詳細的介紹。返回值的形式取決于函數的類型。返回值可以是數據、指針、字符串等,在調用該函數時,可以根據返回值判斷函數是否正確執行,也可以得到所需的信息。舉個例子,
intadd(intx,inty)
{
inta;
a=xy;
returna
]這個函數返回兩個數字相加的結果。如果在函數中調用此函數,則可以返回兩個數據之和,例如
intget。Add()
{
intb;
B=Add(1,2);
printf(\%d\n“)
return0
}]調用Add函數時,函數返回a,調用時得到Add指定B=Add();然后a返回B,這是所需12的結果。在get中,如果add函數的返回值為0,則可以根據函數的返回值判斷函數是否執行成功,例如
intmain()
{
INTC
C=getAdd()
if(C==0)
{
printf(“OK\n”)}
else
{
printf(“error\n”)}
這里,您知道getAdd的返回值是0。如果調用此函數的返回值不為0,則此函數執行時出錯。
當然,函數的返回值也可以是指針,它包含您想要的內容。需要注意的是,有些函數沒有返回值,例如,void函數沒有返回值。
我只是舉個例子來說明這個問題。你需要自己找到細節。
C語言的返回值返回到什么地方了?所謂函數返回值是指函數在操作后向調用父函數或系統返回一個值。此值可以是各種變量類型。舉一個簡單的例子:intadd(inta,intb){return(a)B)}intmain(){intresresres=add(3,4)printf(“%d”,RES)return0}在主函數main中調用子函數add并傳遞參數3和4,add通過運算得到7個值,將return語句得到的值返回給它使用的調用函數,在中間,返回值用于給出賦值。函數返回值可以理解為解決問題后得到的結論。把結論給別人就像在書上寫一個定理給別人用。
C語言中函數的返回值是什么意思,是返回到哪里去?怎么判斷?Return是向函數返回值并終止函數。例如:function(){return10//此時,函數a的值將等于10,函數中的以下內容將不再執行文檔.寫入(50)//因為上面已經返回了,所以這個代碼不會被執行}至于什么時候使用它,這取決于您希望函數做什么。如果你想讓它返回一個值,它就會返回,不,如果你想讓他返回,你就不會!例如,要對函數執行加法操作,它需要返回一個值。然后,調用函數a(B,c){returnB,c}:varabc=a(5,80)。此時,ABC變量的值將為85。如果要直接輸出結果,請不要返回值,然后使用函數a(B,c){文檔.寫入(bc)此時調用varabc=a(5,80)時,頁面將輸出85,但ABC沒有值。當然,JS中的return不必在函數中使用。有時它還可以用來阻止某些操作,例如表單提交。如果表單提交事件返回false,則不會提交表單:onsubmit=“returnfalse”
分享文章:c語言返回值怎么理解Java的return返回值是返回到方法了嗎?-創新互聯
網站地址:http://www.yijiale78.com/article30/docsso.html
成都網站建設公司_創新互聯,為您提供網站設計、App設計、小程序開發、微信公眾號、商城網站、網站設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯