函數(shù)的作用主要是為了重復(fù)調(diào)用,當(dāng)一段代碼在多處使用時(shí),就要考慮寫函數(shù)了。
創(chuàng)新互聯(lián)公司響應(yīng)式網(wǎng)站特點(diǎn)就是不管在電腦、平板還是手機(jī)上,H5頁(yè)面制作都會(huì)根據(jù)屏幕尺寸自動(dòng)調(diào)節(jié)大小、圖片分辨率,并且融入一定的動(dòng)畫特效,讓網(wǎng)站看起來(lái)非常的美觀大方。從網(wǎng)站需求對(duì)接到網(wǎng)站制作設(shè)計(jì)、從代碼編寫到項(xiàng)目上線運(yùn)維,技術(shù)人員全程跟蹤,快速響應(yīng)
還有一個(gè)方面,用了函數(shù),代碼看起來(lái)會(huì)很簡(jiǎn)潔。
函數(shù)調(diào)用是指:簡(jiǎn)單來(lái)講,假如小明是班長(zhǎng),小紅是本班的生活委員,小明要想收班費(fèi),但每個(gè)人都有不同的職責(zé),而班長(zhǎng)是用來(lái)組織和統(tǒng)籌工作的,而作為生活委員的小紅的職責(zé)之一就是收取和管理班費(fèi),所以這樣的話,小明只需讓小紅去做就行,也就是說(shuō)只需發(fā)出指令給小紅就可以了,而小紅就是執(zhí)行這項(xiàng)活動(dòng)的承擔(dān)者;在這里小紅就相當(dāng)于被調(diào)用函數(shù),小明是調(diào)用函數(shù)。
函數(shù)調(diào)用總共有三種方式:
1.
函數(shù)表達(dá)式:
1函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。
2.
函數(shù)語(yǔ)句:
函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語(yǔ)句。例如:
printf
("%d",a);scanf
("%d",b);都是以函數(shù)語(yǔ)句的方式調(diào)用函數(shù)。
3.
函數(shù)實(shí)參:
函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。例如:
printf("%d",max(x,y));
即是把max調(diào)用的返回值又作為printf函數(shù)的實(shí)參來(lái)使用的。在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問(wèn)題是求值順序的問(wèn)題。所謂求值順序是指對(duì)實(shí)參表中各量是自左至右使用呢,還是自右至左使用。對(duì)此,各系統(tǒng)的規(guī)定不一定相同。
注意的是:1.假如在你的那句調(diào)用語(yǔ)句開(kāi)始,例如:
#include
int
max(int
x,int
y){
if(xy||x=y)
return
x;
else
return
y;
}
void
main(){
int
a,b;
scanf("%d%d",a,b)
;
printf("%d",max(a,b));
printf("程序結(jié)束\n");
}
在這個(gè)函數(shù)中,我們是在main()函數(shù)中用函數(shù)實(shí)參進(jìn)行調(diào)用的,這樣的話。main()函數(shù)是一個(gè)程序的入口,
在執(zhí)行
printf("%d",max(a,b));
這條語(yǔ)句的max(a,b)時(shí)候,開(kāi)始轉(zhuǎn)到max(int,int)函數(shù)中執(zhí)行,執(zhí)行完后在回到printf("%d",max(a,b));
進(jìn)行輸出a,b中的最大值,然后再接著執(zhí)行main()函數(shù)的剩下語(yǔ)句
printf("程序結(jié)束\n");推出程序。但我們調(diào)用的時(shí)候,main()函數(shù)(即調(diào)用函數(shù))需要給被調(diào)用函數(shù)提供必要的具體數(shù)據(jù),即x,y的值。所以表達(dá)式max(a,b)即把a(bǔ)的值賦給x,b的值賦值給y;如此執(zhí)行下去。
即若輸入
3
4
程序結(jié)果為:
4
程序結(jié)束
2.還是上面的那個(gè)例子,若int
max(int
x,int
y)在main()函數(shù)的下面,要調(diào)用的話,就需要在main()函數(shù)之前進(jìn)行聲明,聲明格式為:
函數(shù)返回值類型
函數(shù)名
(形參類型1
形參名1,形參類型2
形參名2......);其中分號(hào)不可少,形參名可以省去,但是形參類型和返回值類型均不可?。。?!如下所示:
#include
int
max(int
x,int
y);
//函數(shù)聲明1
或者int
max(int
,int
);
//函數(shù)聲明2
void
main(){
或者
int
max(int
x,int
y);
//函數(shù)聲明3
或者int
max(int
,int
);
//函數(shù)聲明4
int
a,b;
scanf("%d%d",a,b)
;
printf("%d",max(a,b));
printf("程序結(jié)束\n");
}
int
max(int
x,int
y){
if(xy||x=y)
return
x;
else
return
y;
}
函數(shù)聲明的作用是讓調(diào)用函數(shù)認(rèn)識(shí)被調(diào)用函數(shù),這樣才可以想被調(diào)用函數(shù)發(fā)送指令!
至于為什么用調(diào)用這個(gè)名字,個(gè)人覺(jué)得這個(gè)是因?yàn)楹苜N切吧,便于理解?。?!
你明白了嗎?不明白可以追問(wèn)哦!希望采納哦!
如果在設(shè)計(jì)c語(yǔ)言程序中,反復(fù)要用到一個(gè)組合計(jì)算的程序段,比如:
void main()
{
int a,b,c,x,y,z,j,k,l;
...
c=a+b; c-=(a-b)/2; //計(jì)算c=(a+b)-(a-b)/2
...
z=x+y; z-=(x-y)/2; //計(jì)算z=(x+y)-(x-y)/2
...
l=j+k; l-=(j-k)/2; //計(jì)算l=(j+k)-(j-k)/2
...
}
由于它們的計(jì)算公式相同,就采用一個(gè)函數(shù)來(lái)替代相似的語(yǔ)句:
int fun(int a,int b) { int c; c=a+b; c-=(a-b)/2; return c; } //按照公式計(jì)算并返回結(jié)果
這樣程序就變成了:
int fun(int a,int b) { int c; c=a+b; c-=(a-b)/2; return c; }
void main()
{
int a,b,c,x,y,z,j,k,l;
...
c=fun(a,b);
...
z=fun(x,y);
...
l=fun(j,k);
...
}
*這樣的效果是:重復(fù)利用了函數(shù)的代碼,節(jié)省程序的代碼量(尤其是計(jì)算公式很復(fù)雜的情況更突出),程序簡(jiǎn)潔易讀,便于統(tǒng)一修改計(jì)算公式和方法。
*還有一個(gè)優(yōu)點(diǎn)就是:你調(diào)用函數(shù)時(shí),無(wú)須知道算法的細(xì)節(jié),按照函數(shù)調(diào)用規(guī)則就可以使用了,比如,標(biāo)準(zhǔn)c提供的函數(shù)double sin(double x),你只要知道這是個(gè)計(jì)算正弦函數(shù)值的函數(shù)即可,拿來(lái)可用而不必去看具體標(biāo)準(zhǔn)函數(shù)庫(kù)是怎樣計(jì)算的。
*你的函數(shù)如果寫得正確、經(jīng)典的話,完全可以封裝成標(biāo)準(zhǔn)函數(shù)拿給其他人使用,甚至可以不提供源代碼就可以。
*沒(méi)有返回值的函數(shù)又可以叫子程序
使用c語(yǔ)言的時(shí)間越長(zhǎng)越能發(fā)現(xiàn)“函數(shù)”的作用非常多。首先C語(yǔ)言程序的基本組成部分就是函數(shù),函數(shù)也是編譯器進(jìn)行編譯的最小單位,函數(shù)讓程序員可以使用“自頂向下逐步求精”的設(shè)計(jì)方法完成軟件設(shè)計(jì)與開(kāi)發(fā),函數(shù)可以重復(fù)調(diào)用讓代碼量減小,函數(shù)使用參數(shù)與返回值與其它函數(shù)交換數(shù)據(jù)使程序結(jié)構(gòu)更清晰,函數(shù)的功能比較明確可以由不同的人來(lái)開(kāi)發(fā)使多人合作開(kāi)發(fā)一個(gè)系統(tǒng)成為可能。