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

評論