如果在c語言函式中有多條return語句程式如何執行

時間 2021-10-17 04:40:55

1樓:

第一、如果一個函式**現了多出return語句,那麼函式會執行首先遇到的那個return語句(不一定是寫在最前面的)。

第二、關於你所說的返回多個值的問題,因為c語言也是採用的按值傳參的方式,所以只能返回一個返回值。如果需要得到多個返回值,那麼可以採用指標做為函式引數(具體做法參見那個經典的交換兩個數的操作),另外,如果引數個數太多,還是建議用結構體……

呃,其實c++裡可以用按引用傳引數的方式搞定,只是我對c不是很熟習,貌似c中不能那樣搞。

我曉得4種引數傳遞方式(按值傳遞,按引用傳遞,傳指標,複製恢復),你自己可以在網上找找具體的操作方法和各種方式間的區別,認真領略下……

共同學習了。呵呵

2樓:功秀英雍霜

當有多個return時,執行完一個就會退出。這樣不會返回多個值,你可以將形參定義為引用型別或指標型別,這樣執行完後形參值就會改變,就像返回多個值一樣

3樓:爾士恩無嫣

一個函式只能返回一個值,沒辦法返回多個的,如果有多個想要返回的值可以用全域性變數,或都指標等等

4樓:

你可以建一個結構體,把要返回的值放到結構體裡,然後返回結構體的指標!

5樓:匿名使用者

如果在if後面加return,還是可以多個的,要不遇到第一個函式就結束了

函式只能返回一個值,要麼用指標

6樓:

沒辦法返回多個

可以用引數的傳遞指標的辦法

7樓:進擊的奕

只執行遇到的第一個return

c語言中如果在函式中有多條return語句,程式如何執行,如果想返回多個值,應該怎麼辦?

8樓:砍侃看

當有多個return時,執行完一個就會退出。這樣不會返回多個值,你可以將形參定義為引用型別或指標型別,這樣執行完後形參值就會改變,就像返回多個值一樣

9樓:匿名使用者

一個函式只能返回一個值,沒辦法返回多個的,如果有多個想要返回的值可以用全域性變數,或都指標等等

10樓:鵬仔

函式沒執行一次只能有一個返回值,同時返回多個值是不行的

如果一段c語言程式中有多個return語句,若執行了第一個,則後面的程式就不執行了嗎???

11樓:匿名使用者

return只會終止當前迴圈或者順序執行的結構。若在迴圈中執行了return,則此次迴圈結束,進入迴圈語句的下一次執行。若是整個函式只是一種順序執行的結構,則執行return侯函式結束。望採納

12樓:匿名使用者

一個函式一旦遇到return,則立刻結束本函式,並返回return後面的值。

13樓:匿名使用者

你應該直接把寫入的資料寫入檔案當中,第二次用的時候直接開啟檔案。查一下c++函式手冊 就可以獲得這些函式。

或者利用資料庫和連結串列實現資料的存取

14樓:匿名使用者

是的……………………

採納我哦

c語言中呼叫函式如何返回多個值?

15樓:八哥說科技

1、通過使用指標,在函式呼叫時,傳遞帶有地址的引數,並使用指標更改其值;這樣,修改後的值就會變成原始引數。

2、通過使用指標返回結果為:

3、通過使用結構:因為結構是使用者定義的資料型別;可以定義一個包含兩個整數變數的結構,並將更大和更小的值儲存到這些變數中,然後使用該結構的值。

4、通過使用結構返回結果為:

5、通過使用陣列,當一個陣列作為引數傳遞時,基地址將傳遞給該函式,因此無論對陣列副本所做的任何更改,都會更改為原始陣列。

6、通過使用陣列返回結果為:

16樓:娛樂小八卦啊

建立陣列,返回指標。

在要返回的兩個值型別相同時,可以用建立陣列的方式,將要返回的值存在陣列中,並返回陣列首地址,這樣就可以實現返回兩個值的效果。需要注意的是,要返回陣列首地址,那麼返回的值不可以是區域性變數,有如下幾種是可以的:

a) 使用靜態區域性變數儲存,並返回地址;

b) 使用全域性變數儲存,返回地址;

c) 函式中動態分配記憶體,並返回申請到的地址,此種方法需要注意,在使用後需要釋放;

d) 在引數中傳入陣列地址,並返回。即返回的實際上是主調函式中的變數地址。

擴充套件資料

通常我們希望通過函式呼叫使主調函式能得到一個確定的值,這就是函式的返回值。函式的返回值是通過函式中的 return 語句獲得的。return 語句將被調函式中的一個確定的值帶回到主調函式中,供主調函式使用。

函式的返回值型別是在定義函式時指定的。return 語句中表示式的型別應與定義函式時指定的返回值型別一致。如果不一致,則以函式定義時的返回值型別為準,對 return 語句中表示式的型別自動進行轉換,然後再將它返回給主調函式使用。

在呼叫函式時,如果需要從被調函式返回一個值供主調函式使用,那麼返回值型別必須定義成非 void 型。此時被調函式中必須包含 return 語句,而且 return 後面必須要有返回值,否則就是語法錯誤。

如果函式有返回值,那麼 return 語句後面的括號可以不要,比如“return(z);”等價於“return z;”。若不需要返回值則可以不要 return 語句。

需要強調的是,一個函式中可以有多個 return 語句,但並不是所有的 return 語句都起作用。執行到哪個 return 語句,就是哪個 return 語句起作用,該 return 語句後的其他語句就都不會執行了。

17樓:匿名使用者

主要可以通過指標或陣列返回多個值,測試**如下,//程式功能,通過結構體實現多個資料返回及通過多個變數指標實現#include

#include

#include

#define pi 3.1415926

struct test

; //返回結構體,實現多個資料返回

struct test* gettest()//變相返回圓的面積、周長

void cir(double r,double *area,double *girth)

int main(int argc, char *ar**)return 0;

}c語言函式名義上函式返回值只能有一個變數或者無返回值,但返回的變數可以是指標或結構體等更復雜的資料,通過指標或結構體從而變相實現多引數返回。可以作為實參間接返回或直接作為返回值返回,但需注意不要返回臨時變數,如gettest()函式中不能定義struct test t變數直接返回。

18樓:

在c語言中,返回多個值主要有兩種方式

一種就像一樓所說的,返回一個陣列。

但是這樣做的壞處在於

呼叫程式者並不知道這個陣列有多大,除非是某些只返回特定大小的函式,一般情況下不建議採用這種方法。

第二種是用指標返回,例項**如下。

void exam(int *t)

main()

如上**,你會發現這個t變成1了。

這是因為你傳的是指標(&是取址符),當然如果你還不知道什麼是指標,那麼就只能等你以後來實踐這種方法了。如我上面這樣的,是最簡單的一個應用。當然你也可以定義下面這樣的

exam(int d, int e, int *t, int *t1.....)

你可以把d,e當作普通引數,然後t和t1當引數返回。

當然你完全可以把這兩種方法混合起來用

比如 int exam(int *size)

這裡,返回一個int陣列,而size則用於告訴呼叫者返回的陣列的大小。

這樣就不會出現陣列越界的情況了。

當然如果是呼叫者誤操作,那是無法避免的情況了

19樓:匿名使用者

可以有很多方法實現

你可以不使用陣列,使用vector來做

std::vectorconvert(int a, int b)或者你可以在外面定義一個陣列,作為傳入引數void convert(int a, int b, int *c)main()

20樓:

指標,還可以用c++中的引用.引用雖說是c++的語法,但c的資料結構也一直在用.

還有一種方法就是反回一個結構體變數,用它可以返回多個值

21樓:匿名使用者

main()

int convert(int a, int b)

22樓:匿名使用者

主要你的主函式裡沒有輸出的語句呀

如果在c語言裡我要輸入任意東西,也就是數字字母符號什麼的亂輸入該怎麼定義

o破天 定義形式為 char str 100 你可以輸入任意的99個字元或是數字,隨便輸入什麼。用getchar 函式可接受任何字元,包括回車 esc等鍵的字元。如 int i char str 100 for i 0 i 100 i str i getchar 或者將for i 0 i 100 i...

c語言中有哪些函式,C語言常用的函式有哪些

鄺培勝裔媼 c語言輸入輸出函式有很多,標準i o函式中包含了如下幾個常用的函式 scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.intgetc file fp getc主...

學語言時如果在第一種語言還未精通的情況下學第二種語言,這樣會學混淆嗎

語言概論 對大多數人來說都會混淆。證據1 很多針對雙語地區兒童的研究資料都表明,兩種語言的發展速度均不會超過單一母語的兒童,而且在相當時期內混淆程度很高。證據2 目前的外語院校開設第二外語的時機普遍選在大三,如果按照語言學習關鍵期的理論,應在大一時開設更為有利,越早開發越好,然而實際上大學一般都要求...