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...
如果在函式中的複合語句中定義了變數,則以下正確的說法是
如果在一個函式中的複合語句中定義了一個變數,則以下正確的說法是該變數只在該複合語句中有效。在一個函式內部定義的變數只在本函式範圍內有效,也就是說只有在本函式內才能引用它們,在此函式以外是不能使用這些變數的。在複合語句內定義的變數只在複合語句範圍內有效,只有在本複合語句內才能引用它們,在複合語句以外是...
學語言時如果在第一種語言還未精通的情況下學第二種語言,這樣會學混淆嗎
語言概論 對大多數人來說都會混淆。證據1 很多針對雙語地區兒童的研究資料都表明,兩種語言的發展速度均不會超過單一母語的兒童,而且在相當時期內混淆程度很高。證據2 目前的外語院校開設第二外語的時機普遍選在大三,如果按照語言學習關鍵期的理論,應在大一時開設更為有利,越早開發越好,然而實際上大學一般都要求...