c語言函式的return誰能仔細給我解釋一下

時間 2021-10-14 22:40:00

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值這個時候主函...