C語言中的函數(shù)為什么只能有一個(gè)返回值輸出?怎么實(shí)現(xiàn)多個(gè)值輸出?
網(wǎng)友解答: C語言的return語句只能返回一個(gè)返回值,要返回多個(gè)值,有以下辦法:1.返回?cái)?shù)組。前提條件是返回的多個(gè)數(shù)值具有相同的數(shù)據(jù)類型,不然也沒法放到一個(gè)數(shù)組里面。2.返回結(jié)構(gòu)體。前
C語言的return語句只能返回一個(gè)返回值,要返回多個(gè)值,有以下辦法:
1.返回?cái)?shù)組。前提條件是返回的多個(gè)數(shù)值具有相同的數(shù)據(jù)類型,不然也沒法放到一個(gè)數(shù)組里面。
2.返回結(jié)構(gòu)體。前提條件是這多個(gè)數(shù)據(jù)有一定的內(nèi)在邏輯關(guān)系,不然強(qiáng)行定義一個(gè)結(jié)構(gòu)體,把一堆不相干的數(shù)據(jù)放一起,即便語法上沒問題,總覺得很別扭。
3.通過函數(shù)參數(shù)來返回多個(gè)返回值。需要把函數(shù)參數(shù)定義為指針形式。
int Funtion(int param1,int param 2,int* p1,double* p2,.....)
上面這個(gè)函數(shù),除了返回一個(gè)int,還能通過函數(shù)參數(shù)里面的兩個(gè)指針p1,p2分別返回一個(gè)int和一個(gè)double。
網(wǎng)友解答:C語言函數(shù)只能有一個(gè)輸出,這是受當(dāng)時(shí)編程方法的影響。是一個(gè)歷史問題。在C語言發(fā)明前,大多數(shù)人還在用匯編語言的時(shí)候,那真的是百花齊放,啥樣都有。導(dǎo)致編程效率底下,bug層出,維護(hù)困難。所以有個(gè)大牛E.W.Dijikstra提出了一個(gè)革命性的思想,結(jié)構(gòu)化程序設(shè)計(jì)。在這個(gè)思想下提出了編程函數(shù)化的理念?;诖顺霈F(xiàn)了一系列的語言。C語言是其中一個(gè)發(fā)展最好的。就好像一個(gè)人生了一堆娃,其中一個(gè)當(dāng)了總統(tǒng)。但總統(tǒng)也來自同一個(gè)基因。關(guān)于C語言為何脫穎而出發(fā)展壯大不是我們這里討論的問題,就不深入講了(講下去可以寫本書)。
我們就講下為何函數(shù)為何只有一個(gè)輸出。其實(shí)都源于數(shù)學(xué)。數(shù)學(xué)的函數(shù)可以有多個(gè)變量,但只有一個(gè)結(jié)果。這其實(shí)是為了數(shù)學(xué)簡單化。編程也是一樣。這樣的編程結(jié)果明確,沒有亂七八糟的網(wǎng)狀關(guān)系。所以現(xiàn)在函數(shù)式編程還是一個(gè)很火的理念。
但是,你不得不承認(rèn),現(xiàn)實(shí)問題還是有很多不止一個(gè)輸出結(jié)果的情況。好在c語言還留了一個(gè)后門。叫指針操作。通過指針操作你可以輸出多個(gè)結(jié)果。這是C語言發(fā)展壯大的一個(gè)原因。也是現(xiàn)在C語言為人詬病的關(guān)鍵點(diǎn)。
現(xiàn)代編程語言大多拋棄了指針操作,但保留了多結(jié)果輸出。不過函數(shù)式編程的理念也沒有丟。也就是函數(shù)只有一個(gè)返回值,但這個(gè)返回值可以包含多個(gè)結(jié)果。