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

數(shù)據(jù)結(jié)構(gòu)與算法:1-4-1-函數(shù)與遞歸(1)#結(jié)構(gòu)數(shù)據(jù)
《C Primer Plus》讀書筆記——遞歸
LabVIEW遞歸
Labview遞歸函數(shù)的使用案例
C++教程之函數(shù)的遞歸調(diào)用
遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法
C++的實(shí)驗(yàn)教程之函數(shù)的遞歸算法資料免費(fèi)下載

所有遞歸代碼都可以轉(zhuǎn)為非遞歸代碼
C語言-內(nèi)聯(lián)函數(shù)、遞歸函數(shù)、指針函數(shù)
遞歸代碼都轉(zhuǎn)為非遞歸可以嗎

Python支持遞歸函數(shù)
函數(shù)與遞歸-3
什么是Python的遞歸函數(shù)
C語言,你真的懂遞歸了嗎?

評(píng)論