1樓:匿名使用者
事實上 無論是return ; 還是return x;
在彙編上都只有一條指令:ret(retn)
只不過對於return x; 會在 執行ret指令之前對eax暫存器賦值:
如果是return 0 ; 可能編譯器會這樣做:
xor eax,eax
ret其他情況類似
然後從c語言角度講
對於返回型別為void的函式
函式體內可以出現return;語句來表示結束本函式的執行
這個時候eax還是有值的,因為 函式返回型別是void,因此在呼叫該函式的地方不可能會去用該函式的返回值,也就意味著該返回值是毫無意義的
樓主想問的 單獨的return;語句,對於這行**,一般只用在返回型別為void的函式體內
若出現在非void返回型別的函式體內,那麼返回值是隱含在暫存器eax中的
然後對於有返回值的函式來說
return後面是肯定需要跟一個值的
這個值是被送入暫存器eax帶出來的~
我說再多 也許還是會有人不信(本人玩逆向的,這一切信不信那是你們的事,我只能把事實告訴你們,我也只能做到這樣了)
下面直接上**上圖:
(微軟任何c/c++編譯器、vc/vs這些、都支援編譯此**,沒有警告,沒有錯誤)
注:主函式不主函式的return都是沒有區別的
但是main函式很特別,特別在它有好多種寫法,標準c真正的主函式返回型別是int
有2個引數,一個是命令列引數個數,一個是命令列引數
windows下面的主函式可以有三個引數,前兩個引數跟標準c一樣,第三個引數是環境變數
這些引數都是由maincrtstartup函式傳進來的,而maincrtstartup再往上你還要研究的話那。。。。那。。。那。。。我只能告訴你這些引數都是要作業系統傳進來的吧~~~
我們程式設計的時候,也許有些菜鳥會把main寫成如下形式:void main()
其實這種寫法在編譯之後都是會被轉化成標準寫法的底樓說的 不帶返回值系統預設返回0這完全是不靠譜的,因為事實當中返回值都是被暫存器eax帶出去的,而對於main是必須要返回值的,菜鳥寫了沒返回值的main在編譯之前就被編譯器替換掉了,哪來的預設返回0的說法?何來預設?系統會把你寫的main換成 標準main形式!
標準main會在底下返回0
主函式return的值只有你在其他程序中建立子程序,子程序的返回狀態被父程序接收的值就是main的返回值,所以,在你寫的程式不需要被其他程序建立的話,main的返回值是無關緊要的
2樓:網海1書生
這是遞迴呼叫,func(9)的執行流程如下:
第一步:執行func(9),p=9-func(7)第二步:執行func(7),p=7-func(5)第三步:
執行func(5),p=5-func(3)第四步:執行func(3),p=3-func(1)第五步:執行func(1),由於引數x小於2,結束遞迴,return 3
返回第四步:p=3-3=0
返回第三步:p=5-0=5
返回第二步:p=7-5=2
返回第一步:p=9-2=7
最後return p
所以最終輸出結果為7
3樓:匿名使用者
遞迴千萬別糾結過程,一旦糾結你就輸了。
遞迴有兩個關鍵要素,做好這兩點就夠了。一個是遞迴規則,可以理解為數列的通項,另一個就是終止條件,可以理解為首項。在寫函式時候注意好遞迴規則和終止條件的關係就可以了。
c語言中return用法?(請熟練者進)
4樓:橘落淮南常成枳
return是返回值,這個返回值是和函式的型別有關的,函式的型別是什麼,他的返回值就是什麼
比方主函式intmain()
{}這裡就必須有一個return,只有void時可以不用返回值。
功能函式
intfun()
return1;
這個時候fun函式的作用就是返回一個int型別的值,可以直接拿來用比方inta=fun();
這裡就相當於inta=1;
另外一個作用return後面的語句不會執行,我們可以用它來結束程式。
5樓:一路的淚
09年,我也是剛才才搜尋到得,return(); 用來返回自定義函式的值!現在明白了?
現在是2023年,我補充一下我的回答。
當程式**現return();時,此時它要表達的意思是沒有返回值。
當程式**現return(a);時,則此函式會有返回值為a。這個a可以定義為任何型別。
6樓:匿名使用者
返回值就是“函式值”
學習學的時候天天都會遇到函式,而函式給一個自變數函式就會有一個函式值對吧
比如說正弦函式sin,sin(x),不同的x值會得到不同的正弦值y=sin(x) 就是將函式值賦值給y,函式運算完畢y就有了一個值c語言函式意思一樣的
int f(int x)
int a=f(5); 那麼a是多少呢 就是2*5=10
7樓:匿名使用者
在返回值是void型的函式可以用return後面不跟東西來返回(可以中途或最後),
它是結束一個函式的執行,在main函式就是結束整個程式,它和exit的區別是,exit不管出現在**都是結束整個程式,用它們在結束程式時,程式對系統而言也是有返回值的,它的返回值就是用return或exit結束程式時它們後面跟的值
8樓:匿名使用者
int f(int a)
int b=f(c);
c的值不同 函式返回給b值也就不同
我認為返回值是函式與外界的介面之一
至於所謂的狀態 應該是由人來規定的 比如當返回值為0我們就知道f()的傳入值c是等於0的
至於是return 值 還是return 表示式都是一個意思 因為表示式最終的值也是由表示式計算的最終結果來儲存的
9樓:只揉小飯勺
return 的作用是結束正在執行的函式,並返回函式值。return後面可以跟一個常量,變數,或是表示式。
函式的定義一般是這樣的,例如:
int a(int i)//第一個int是函式的返回值的型別,也就是return後面跟的值的型別,a是函式的名稱,括號裡的是傳遞給函式的引數,int是引數的型別,i是引數的名字
簡單函式舉例:
int addone(int b)
該函式的作用是取得一個數,將這個數加上1,再將結果返回
呼叫時這樣:
int result= addone(2);//此時result的值為3
函式括號裡的引數也可以為變數或能算出值的表示式
以上就是一個基本的函式,一般的函式都有返回值,也就是return後面跟的值,返回值可以為各種資料型別,如:int,float,double,char,a(陣列),*a(指標),結構或類(c++)
但不是所有函式都有返回值,如果某個函式無返回值,那麼返回值的位置則為“void”關鍵字,此時函式體中無返回值,即無return的值。但是函式中也可出現return,即一個空的return句子,其作用是使函式立即結束,如
void print()//括號中為空表示無傳遞引數
//該函式只執行到return語句處,即螢幕上輸出的為"ab"
10樓:江小右
return是個好東西
第一個作用,也就是他的真實作用
返回值,這個返回值是和函式的型別有關的,函式的型別是什麼,他的返回值就是什麼
比方主函式int main()
{}這裡就必須有一個return,只有void時可以不用返回值。
功能函式
int fun()
這個時候fun函式的作用就是返回一個int 型別的值,可以直接拿來用比方int a=fun();
這裡就相當於int a=1;
另外一個作用return後面的語句不會執行,我們可以用它來結束程式比方找出三個數種最大的一個數
void main
.....
}在這裡if(b>c)
我們就可以直接得出a是最大了,就沒必要執行下面的語句了,return治理就起到了終止語句的作用了
等用得多了還會有些妙用的,你要自己慢慢體會
c語言中return的含義?
11樓:及羽揚俊
在函式返回型別為void時,即不需要返回任何值,要想結束函式就用
return;
它表示函式執行到這一句時終止函式
12樓:匿名使用者
return 表示結束當前函式並返回值,如果沒定義,則返回 null
如 return 1; 表示返回1
return; 表示返回 null
13樓:匿名使用者
這裡我給你一個簡單的c程式的例子。
int main()
因為在主函式的前面定義了一個int型別的數值,這個資料型別正反應了return要返回的資料型別。通過return,可以讓你對你所關心的資料被另外一個函式來呼叫。這要在你充分理解的c語言的模組化的程式設計理念之後才會有更深刻的理解。
當然下面的操作也是正確的。
void main()
14樓:匿名使用者
return返回一個數值的意思就是把return 《表示式》後面表示式的值返回給呼叫他的函式。舉個例子:
int sum(int i,int j)
main()
程式的輸出為:
21這個21從何而來呢main函式呼叫sum(a,b)函式時將a的值賦給i,b的值賦給j,上面說了return i+j;會計算i+j的值也就是結果等於21,並將21帶回給呼叫它的函式,即c=sum(a,b);相當於c=21,這個21 就是由sum(a,b)中的return反回來的。
c語言函式return和void的用處和意義分別是什麼
難得當歌對酒時 以下不包括建構函式 但建構函式中可以寫return 以結束其執行 1,函式的返回值型別只要不是 void 就要返回一個相同型別的值,當函式出現在一個表示式中時,這個值就是函式的值,比如說你的e max a,b 中,max若不返回一個值,那e的值就有問題,這樣寫函式應該會有錯誤或者警告...
c語言中函式裡是不是遇到return語句就不再執行函式
小夏在深圳 c語言沒有嚴格意義上的 陣列型別 可能從c語言 角度來看,似乎有陣列型別的變數,但是如果嘗試將該變數像其他變數一樣使用,得到的實際上是指向陣列第一個元素的指標。在c語言程式開發中,不可以編寫下面這樣的 char f void 8 int main int argc,char ar 不能在...
C語言關於return的內容
1全部你去掉了return z程式也一樣可以正常執行?你最好再檢查一遍,如果真是這樣那就是你的編譯器出問題了,因為你定義了max的返回值為一個int型的變數,沒有return的話在編譯的時候應該會有錯誤提示無法編譯才對。在c語言裡,return返回的是一個變數的副本。如果一個函式不需要返回任何東西,...