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語句程式如何執行
第一 如果一個函式 現了多出return語句,那麼函式會執行首先遇到的那個return語句 不一定是寫在最前面的 第二 關於你所說的返回多個值的問題,因為c語言也是採用的按值傳參的方式,所以只能返回一個返回值。如果需要得到多個返回值,那麼可以採用指標做為函式引數 具體做法參見那個經典的交換兩個數的操...
C語言中return的含義,C語言中Return 0是什麼作用
及羽揚俊 在函式返回型別為void時,即不需要返回任何值,要想結束函式就用 return 它表示函式執行到這一句時終止函式 return 表示結束當前函式並返回值,如果沒定義,則返回 null 如 return 1 表示返回1 return 表示返回 null 這裡我給你一個簡單的c程式的例子。in...
C語言的關於return的問題,C語言的一個關於return的問題
這個i是定義在函式gys中,其生命週期只存在函式gys中在這裡,所謂返回值只是將i的值返回到主函式中,但是i的儲存空間是不會返回的 所以不能在主函式中直接使用printf d n i 因為i在返回的時候空間已經被釋放了 利用函式呼叫gys n,m 能得到函式的返回值,即函式gys中的i值這個時候主函...