c語言函數(shù)只能最多有一個返回值。我們以一個數(shù)據(jù)運算函數(shù)作為實例講解:
網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了港口免費建站歡迎大家使用!
使用指針返回額外數(shù)據(jù):定義指針參數(shù),將結果通過指針返回。
如果有很多類型相同的數(shù)據(jù),如何返回數(shù)組呢?c語言也只能借助指針返回數(shù)組。
使用結構體返回:如果返回多個數(shù)據(jù),并且各個數(shù)據(jù)類型都不相同。那么只能通過結構體返回。
使用結構體指針返回:直接返回結構體,程序執(zhí)行效率會受到影響。因為需要復制結構體數(shù)據(jù),如果結構體數(shù)據(jù)比較大,復制操作會損耗程序性能。
通過使用結構體指針,我們也可以返回多個數(shù)據(jù)結果。
在c++中,除了使用指針,通常使用引用返回多個數(shù)據(jù)。與指針相比,使用引用時不用擔心函數(shù)調(diào)用者傳入不符合預期的指針。
首先說明一下你的程序的問題與缺陷:
1: return語句 只能返回一個值,而不能寫成 “return h,l;”
2:你在main()中定義了h,l,而在調(diào)用cal()時,又定義了h,l,這兩個h,l是完全不同的兩組。即使你為cal()里的h,l賦值,那么返回到main()時,h,l仍然為0.
3:你在cal()里的scanf寫的不好。兩個%d之間最好什么都沒有,加了逗號,可能會在讀取時,h,l賦值錯誤。(具體請看我下面的程序)
下面是我的解法:
先問一下,你用的是TC2.0還是VC6.0?
如果是VC6.0,那么可以使用引用類型:
/*法一:使用引用*/
#includestdio.h
void?cal(intch,?intcl);????/*聲明ch,cl為引用類型*/
void?main()
{
int?h=0,l=0;
cal(h,?l);????????????/*這里將h,l傳入cal()*/
printf("%d,%d",h,l);????
}
void?cal(int?ch,?int?cl)
{
scanf("%d%d",ch,cl);/*這里為ch,cl賦值*/
}
TC2.0中好像不支持引用類型。我沒測試。
-------------------------
如果是TC2.0,那么可以使用指針:
/*法二:使用指針*/
#includestdio.h
void?cal(int?*ph,?int?*pl);????/*這里將ph,pl聲明為指針*/
void?main()
{
int?h=0,l=0;
cal(h,?l);????????/*將變量h,l地址傳過去。*/
printf("%d,%d",h,l);
}
void?cal(int?*ph,?int?*pl)
{
scanf("%d%d",ph,pl);????/*為ph,pl賦值*/
}
------------------
以上兩種方法都可以解決你說的問題。
有問題請追問。
return后接一個值。
在調(diào)用這個函數(shù)的函數(shù)里面,調(diào)用它的時候希望獲得一個值,如果不希望獲得這個值的時候,用void聲明就好。如果需要,比如說需要得到一個整形值
就聲明
int func()
在調(diào)用它的比如main里面
func()的作用就可以相當于一個int型常數(shù)
比如外面定義了
int max(int a,int b)
{
return ab?a:b;
}
主函數(shù)里面是
main()
{
int A;
A=max(1,2);
}
這時候就是通過max計算 12 則return 一個1 ,12 則return一個2。很明顯12 所以這里max(1,2)就會return 一個 2
這時候主函數(shù)里的max(1,2)就相當于一個常數(shù) 2
A=max(1,2)的作用就相當于A=2
這個意思。
所謂返回值,就是人們想要知道函數(shù)或者程序所得到 的結果而設計的函數(shù)或者程序結束時給出一個值。比如:我們編寫一個加法函數(shù),肯定想知道加完過后的結果是什么,那么我們就指定這個結果為該加法程序的返回值。
關于返回值的返回:
1、函數(shù)調(diào)用語句本身代表其返回值:例如:fun(a);那么“fun(a)”就是這個返回值。
2、可以把返回值存到對應類型的變量之中。例如:int a=fun(b);
3、返回值是多種多樣的,可以是各種各樣的,int short char double 等等,還可以是指針或者結構體。在數(shù)據(jù)結構的二叉樹部分,某一個函數(shù)的返回值是一個帶有兩個指針的結構體。
①為什么需要return?
為了回答這個問題,
我打算用 模塊思維 來解釋。
②定義模塊(形參模塊)
定義函數(shù):f(s)(a,b)
滿足公式:s=a+b
函數(shù)名:f(s)
形參: a,b(公式中的 變量 )
函數(shù)返回值:return s
③調(diào)用模塊(實參模塊)
主函數(shù):main()表示用戶自己編寫的部分
調(diào)用函數(shù):f(s)(1,2)
滿足公式:x=f(s)(1,2)
函數(shù)名:f(s)和定義函數(shù)一致,產(chǎn)生調(diào)用
實參 :1,2( 賦值 給公式的值)
求值:printf("%d\n",x),求x的值?
④值的傳遞過程
調(diào)用模塊 中調(diào)用函數(shù)x=f(s)(1,2)
將實參1和2的值賦值給
定義模塊 中的形參a和b
(實參到形參是單向傳遞,不可逆)
定義模塊計算出s=a+b=1+2=3
定義模塊 中的return s
將s的值賦值給
調(diào)用模塊 中的函數(shù)f(s)(1,2)
即x=f(s)(1,2)=s=3
~
return s的作用
就是將定義模塊中的s
賦值 給調(diào)用模塊中的調(diào)用函數(shù)
如果沒有return s
調(diào)用模塊中的調(diào)用函數(shù)將永遠沒有定值
即所求x 無定值
這一點和數(shù)學不一樣,
數(shù)學中
同一函數(shù)名的值是 通用 的,
C語言中
定義函數(shù)和調(diào)用函數(shù)的值是 隔離 的,
盡管函數(shù)名一樣
如果不賦值,調(diào)用函數(shù)永遠無定值。
網(wǎng)站題目:c語言怎么使函數(shù)返回值 c語言有返回值的函數(shù)
文章出自:http://chinadenli.net/article18/doddddp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站維護、小程序開發(fā)、軟件開發(fā)、網(wǎng)頁設計公司、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)