本期介紹C語(yǔ)言函數(shù)與遞歸部分的筆記。在我看來(lái),如果說(shuō)各種循環(huán)與分支是一個(gè)系統(tǒng)的骨架的話,那么形式繁多的函數(shù)就是C語(yǔ)言的血肉了,正是各式各樣的函數(shù)決定了C語(yǔ)言的各種功能。那么話不多說(shuō),既然函數(shù)如此重要,那就快跟我一起了解函數(shù)吧(ps:此部分內(nèi)容較多,將會(huì)分成多期來(lái)更新吖)
本章主要掌握函數(shù)的基本使用和遞歸
1.函數(shù)是什么
2.庫(kù)函數(shù)的定義及使用查找方法
3.自定義函數(shù)的定義及使用方法
4.函數(shù)參數(shù)的類型
-
函數(shù)是什么?-----“子程序
在計(jì)算機(jī)科學(xué)中,子程序是一個(gè)大型程序中的部分代碼,由一個(gè)或多個(gè)語(yǔ)句塊組成。它負(fù)責(zé)完成某項(xiàng)特定任務(wù),而且相較于其他代碼來(lái)說(shuō)具備相對(duì)的獨(dú)立性。
一般會(huì)有輸入參數(shù)并有返回值,提供對(duì)過(guò)程的封裝和對(duì)細(xì)節(jié)的隱藏。這些代碼通常被集成為軟件庫(kù)。C語(yǔ)言函數(shù)分為兩類:庫(kù)函數(shù)和自定義函數(shù)。
-
庫(kù)函數(shù)
為什么會(huì)存在庫(kù)函數(shù)?
我們?cè)诰帉懘a時(shí),總會(huì)頻繁地使用一些基本的功能,比如打印(printf),字符拷貝(strcpy),n的k次方數(shù)學(xué)運(yùn)算(pow)..........當(dāng)我們需要使用這些功能時(shí),如果臨時(shí)編寫就會(huì)很麻煩,為了支持可移植性和提高程序的效率,C語(yǔ)言的基礎(chǔ)庫(kù)中提供了一系列庫(kù)函數(shù),方便大家進(jìn)行程序開(kāi)發(fā)。
庫(kù)函數(shù)的種類和數(shù)量有很多,在使用時(shí)我們不需要也不可能將所有的庫(kù)函數(shù)使用方法及細(xì)節(jié)全部背下來(lái),只需要像查字典一樣用一個(gè)查一個(gè)就行了
那么C語(yǔ)言的字典是什么呢?下面我會(huì)提供幾個(gè)權(quán)威的網(wǎng)站供大家參考,鏈接如下:
http://cplusplus.com
http://cppreference.com
以上網(wǎng)站都非常實(shí)用奧~~~
當(dāng)然我們?cè)谑褂脦?kù)函數(shù)之前一定要記住先聲明用**#include**所引用的頭文件,比如在使用printf函數(shù)時(shí)需引用
,使用pow函數(shù)時(shí)需引用頭文件 等等,這些在上述網(wǎng)站也是可以查到的 -
自定義函數(shù)
庫(kù)函數(shù)雖功能強(qiáng)大,但還是遠(yuǎn)遠(yuǎn)無(wú)法滿足我們編程需求
所以更重要的是 自定義函數(shù)
自定義函數(shù)和庫(kù)函數(shù)一樣,有函數(shù)名,返回值類型和函數(shù)參數(shù)。但不一樣的是這些都需要我們自己來(lái)設(shè)計(jì),這就給了程序員很大的發(fā)揮空間,話不多說(shuō),我們接下來(lái)動(dòng)手寫一個(gè)簡(jiǎn)單的自定義函數(shù):
-
void swap(int x,int y)//返回值類型,函數(shù)名,函數(shù)參數(shù) { int tmp=0; tmp=x; x=y; y=tmp; }//函數(shù)體
這樣,我們就完成了一個(gè)函數(shù),它的功能是交換兩個(gè)參數(shù)的值,但這個(gè)函數(shù)在具體使用時(shí)仍有問(wèn)題,不過(guò)它可以幫助我們了解自定義函數(shù)的幾大要素:返回值類型 ,函數(shù)名,函數(shù)參數(shù)和函數(shù)主體。
需要注意的是,由于是“自定義”函數(shù),我們?cè)谄鹈麜r(shí)可以像給游戲角色起名一樣隨意起,但是并不推薦大家這樣做,舉個(gè)栗子
int add(int x,int y)
{
int z=0;
z=x-y;
return z;
}
這樣我們就定義了一個(gè)看似非常"合理"的函數(shù),說(shuō)它合理是因?yàn)榇撕瘮?shù)完全符合自定義函數(shù)定義規(guī)則,但是我們把一個(gè)執(zhí)行減法功能的函數(shù)命名為“add”,這顯然會(huì)引起歧義,為了使我們的代碼具有可移植性并且提高程序的運(yùn)行效率,我推薦大家根據(jù)函數(shù)功能來(lái)命名
函數(shù)的參數(shù)
實(shí)際參數(shù)(實(shí)參)
真實(shí)傳遞給函數(shù)的參數(shù)叫實(shí)參。實(shí)參可以是:常量,變量,表達(dá)式,函數(shù)等等。無(wú)論實(shí)參是何種類型的常量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須有確定的值,以便把這些確定的值傳遞給形參
** 形式參數(shù)(形參)**
形式參數(shù)是指函數(shù)在定義時(shí)括號(hào)中的變量,因?yàn)閰?shù)形式只有函數(shù)被調(diào)用的過(guò)程才實(shí)例化,所以叫形式參數(shù)。形式參數(shù)在函數(shù)調(diào)用完成后就自動(dòng)銷毀了。因此形式參數(shù)只在函數(shù)中有效。
只看定義當(dāng)然很難理解,我們上函數(shù)
int get_max(int x,int y)//括號(hào)內(nèi)是形式參數(shù)
{
if (x>y)
return 0;
else
return y;
}//以上是對(duì)一個(gè)自定義函數(shù)的定義過(guò)程
int main()
{
int a=10;
int b=20;
int max=get_max(a,b);//實(shí)際參數(shù),必須有實(shí)際的值,可以放變量
printf("max=%d",max)
max=get_max(100,300+1);//也可以放實(shí)際的值
max=get_max(100,get_max(3,7));//還可以放另一個(gè)函數(shù)
printf("max=%d",max);
}
大家如果還是覺(jué)得難以理解,那我舉個(gè)具體的例子:
求一個(gè)長(zhǎng)方形的面積,我們首先要套用公式“s=a*b”
比如該長(zhǎng)方形長(zhǎng)是5,寬是4,我們就要將5和4帶入到上面的公式里得出面積為5*4=20
在上述過(guò)程中,a,b就是形式參數(shù),而具體的值像4,5就是實(shí)際參數(shù)
在使用時(shí)實(shí)際參數(shù)要把值傳遞給形式參數(shù),在函數(shù)體內(nèi)進(jìn)行相應(yīng)運(yùn)算后得出結(jié)果再傳遞出來(lái)。這就是函數(shù)調(diào)用的其中一種方式:傳值調(diào)用。而這里就涉及到了函數(shù)的調(diào)用,篇幅有限,我們下期再繼續(xù)介紹相關(guān)知識(shí),這里就不贅述了
ok,到此我們本期的內(nèi)容就結(jié)束了,祝大家寒假愉快!
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7598瀏覽量
136197 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4306瀏覽量
62430 -
循環(huán)
+關(guān)注
關(guān)注
0文章
92瀏覽量
15957
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論