①為什么需要return?
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)歷城,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
為了回答這個(gè)問題,
我打算用 模塊思維 來解釋。
②定義模塊(形參模塊)
定義函數(shù):f(s)(a,b)
滿足公式:s=a+b
函數(shù)名:f(s)
形參: a,b(公式中的 變量 )
函數(shù)返回值:return s
③調(diào)用模塊(實(shí)參模塊)
主函數(shù):main()表示用戶自己編寫的部分
調(diào)用函數(shù):f(s)(1,2)
滿足公式:x=f(s)(1,2)
函數(shù)名:f(s)和定義函數(shù)一致,產(chǎn)生調(diào)用
實(shí)參 :1,2( 賦值 給公式的值)
求值:printf("%d\n",x),求x的值?
④值的傳遞過程
調(diào)用模塊 中調(diào)用函數(shù)x=f(s)(1,2)
將實(shí)參1和2的值賦值給
定義模塊 中的形參a和b
(實(shí)參到形參是單向傳遞,不可逆)
定義模塊計(jì)算出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ù)將永遠(yuǎn)沒有定值
即所求x 無定值
這一點(diǎn)和數(shù)學(xué)不一樣,
數(shù)學(xué)中
同一函數(shù)名的值是 通用 的,
C語言中
定義函數(shù)和調(diào)用函數(shù)的值是 隔離 的,
盡管函數(shù)名一樣
如果不賦值,調(diào)用函數(shù)永遠(yuǎn)無定值。
C語言指向函數(shù)的指針承載的信息比較復(fù)雜,組織起來要素要寫全。根據(jù)指向函數(shù)的指針的書寫語法,下面的代碼就是一個(gè)返回函數(shù)指針的函數(shù):
int (*f(void))(int){//f是函數(shù),沒有參數(shù),返回指向一個(gè)函數(shù)的指針;這個(gè)被指向的函數(shù)有一個(gè)int型形參,且返回一個(gè)int值
return fun;//fun是個(gè)函數(shù)名,必須具備一個(gè)int形參、返回int值的要求
}
以下代碼可以驗(yàn)證上述函數(shù)的正確性:
//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.
#include?"stdio.h"
int?fun(int?n){
printf("abcdef\n");
return?n;
}
int?(*f(void))(int){
return?fun;
}
int?main(void){
printf("%d\n",f()(100));//調(diào)用函數(shù)f,通過f返回的指針用100調(diào)用函數(shù)fun
return?0;
}
輸出是:
abcdef
100
C語言,有返回值的處理,可以分兩種情況,1,返回一個(gè)值,可以用:
返回類型 函數(shù)名([參數(shù)列表])
{
return (返回值);
}
多個(gè)返回值,可以返回一個(gè)自定義結(jié)構(gòu)體,
返回結(jié)構(gòu)體 函靈敏名([參數(shù)列表])
{
return (結(jié)構(gòu)體名);
}
也可用指針的形式,直接操作,此時(shí),接收返回值變量的地址,可以以指針的形式,傳遞給函數(shù)),進(jìn)行操作,具體方法和實(shí)例.