曾經(jīng)有人這么說(shuō)過(guò):函數(shù)炉旷,是一切編程語(yǔ)言的精髓。
通過(guò)函數(shù)叉讥,你可以達(dá)到很多目的:精簡(jiǎn)代碼窘行,整理算法,避免重復(fù)代碼等種種好處图仓。
-
函數(shù)概念的解釋:
人們?cè)谇蠼庖粋€(gè)復(fù)雜問(wèn)題時(shí)罐盔,通常采用的是逐步分解、分而治之的方法救崔,也就是把一個(gè)大問(wèn)題分解成若干個(gè)比較容易求解的小問(wèn)題惶看,然后分別求解捏顺。C語(yǔ)言中的函數(shù)也是這么一個(gè)道理,它通過(guò)把一個(gè)很長(zhǎng)的代碼簡(jiǎn)化為多個(gè)簡(jiǎn)單的代碼形式纬黎,分別予以實(shí)現(xiàn)幅骄,最后再把所有的程序模塊像搭積木一樣裝配起來(lái),這種在程序設(shè)計(jì)中分而治之的策略本今,被稱為模塊化程序設(shè)計(jì)方法拆座。
利用函數(shù),不僅可以實(shí)現(xiàn)程序的模塊化冠息,程序設(shè)計(jì)得簡(jiǎn)單和直觀挪凑,提高了程序的易讀性和可維護(hù)性,而且還可以把程序中普通用到的一些計(jì)算或操作編成通用的函數(shù)逛艰,以供隨時(shí)調(diào)用躏碳,這樣可以大大地減輕程序員的代碼工作量。
函數(shù)對(duì)于C語(yǔ)言來(lái)說(shuō)瓮孙,是很重要的唐断,對(duì)于我們物聯(lián)電子專業(yè)這些依賴C語(yǔ)言編寫(xiě)代碼的同學(xué)則更為重要。
單片機(jī)杭抠,嵌入式脸甘,傳感器,射頻偏灿,Arduino等等專業(yè)課丹诀,都是以C語(yǔ)言為主程序代碼進(jìn)行輸入。而這些代碼翁垂,動(dòng)輒上百行铆遭,上千行,而且重復(fù)量會(huì)非常大沿猜,也就是一模一樣的代碼會(huì)重復(fù)多次枚荣,這時(shí)函數(shù)的重要性則會(huì)體現(xiàn)的淋漓盡致~所以,函數(shù)的學(xué)習(xí)是重中之重啼肩!請(qǐng)大家務(wù)必認(rèn)真學(xué)習(xí)這篇函數(shù)入門教學(xué)橄妆。
為了讓大家更好的學(xué)習(xí)函數(shù),我們繼續(xù)通過(guò)做題的方式來(lái)進(jìn)行祈坠。首先我們優(yōu)先從最簡(jiǎn)單的題目開(kāi)始做起害碾。大家進(jìn)入OJ后做的第一道題,一般都是1000題 a+b這道題赦拘。相信現(xiàn)在大家返回來(lái)看這道題都會(huì)覺(jué)得這題特別簡(jiǎn)單了慌随,做起來(lái)應(yīng)該也不用幾秒鐘就能完成。那么我們就從這道題入手,告訴大家怎么用函數(shù)形式完成這道簡(jiǎn)單的a+b阁猜。
1000: 整數(shù)a+b
題目描述
計(jì)算兩個(gè)整數(shù)的和丸逸。輸入
輸入兩個(gè)整數(shù),兩個(gè)整數(shù)用空格隔開(kāi)蹦漠。輸出
輸出為兩個(gè)整數(shù)的和椭员,單獨(dú)占一行车海。原型代碼:
#include<stdio.h>
int main()
{
int a,b,s;
scanf("%d%d",&a,&b);
s=a+b;
printf("%d\n",i);
}
- 代碼解析:
首先我們看這段main()函數(shù)代碼的原型笛园。一共由三個(gè)參數(shù),一個(gè)算式以及輸出輸入構(gòu)成侍芝。
而一個(gè)函數(shù)的組成部分由返回類型研铆,函數(shù)名稱,參數(shù)州叠,函數(shù)主體構(gòu)成棵红。
這里逐步解析這個(gè)組成分別會(huì)在原型里處于哪個(gè)部分。
1.首先是函數(shù)名稱:函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)的整個(gè)簽名咧栗。函數(shù)名逆甜,就是函數(shù)的名字,例如下面代碼中的add()致板,我們?nèi)绻枰玫竭@個(gè)函數(shù)的時(shí)候交煞,只需要在主函數(shù)main()函數(shù)中直接引用這個(gè)函數(shù)的名字即可。而參數(shù)列表則是你在運(yùn)行這個(gè)函數(shù)時(shí)所要引入這個(gè)函數(shù)中的參數(shù)斟或。
2.接著介紹參數(shù):我們定義的add函數(shù)里引入了一個(gè)整型x,一個(gè)整型y素征。這里被稱為虛擬參數(shù),簡(jiǎn)稱“虛參”萝挤。對(duì)比兩個(gè)代碼我們可以發(fā)現(xiàn)御毅,這里函數(shù)中引入的是輸入的a,b怜珍;而a,b在這里被稱為實(shí)際參數(shù)端蛆,簡(jiǎn)稱“實(shí)參”。虛參實(shí)參講起來(lái)太復(fù)雜酥泛,我們只需要簡(jiǎn)單的理解為:虛參是自定義函數(shù)里的定義今豆,實(shí)參是主函數(shù)里的定義即可。
3.函數(shù)主體:函數(shù)主體簡(jiǎn)單來(lái)說(shuō)就是函數(shù)里面計(jì)算的部分揭璃,算法的部分:包含一組定義函數(shù)執(zhí)行任務(wù)的語(yǔ)句晚凿。例如這里,我們把原型函數(shù)中計(jì)算加法的部分放在了函數(shù)里完成瘦馍,這就是函數(shù)的主體歼秽。
4.返回類型:任何函數(shù)都需要有返回值,即使是我們以前寫(xiě)的代碼情组,一樣有返回值燥筷。只是main()函數(shù)的返回值通常默認(rèn)為0箩祥,可以不寫(xiě)。這里我們自定義了一個(gè)函數(shù)肆氓,一樣要有他的返回值袍祖,我們需要這個(gè)函數(shù)完成怎樣的運(yùn)算,運(yùn)算的結(jié)果通常就是函數(shù)的返回值谢揪。
- 函數(shù)代碼:
#include<stdio.h>
int add(int x,int y)
{
int s;
s=x+y;
return s;
}
int main()
{
int a,b,f;
scanf("%d %d",&a,&b);
f=add(a,b);
printf("%d",f);
return 0;
}
這兩段代碼所運(yùn)行的結(jié)果是完全一樣的蕉陋,輸出輸入的過(guò)程也是一樣的。大家可以通過(guò)對(duì)比來(lái)模仿出其他題目的函數(shù)寫(xiě)法拨扶。
當(dāng)然凳鬓,這里肯定會(huì)有同學(xué)覺(jué)得,明明函數(shù)的代碼要遠(yuǎn)比前一段要長(zhǎng)呀患民,你怎么會(huì)說(shuō)他方便呢缩举?
這里賣個(gè)關(guān)子,等你們以后嘗試到在循環(huán)里使用函數(shù)匹颤,以及多個(gè)重復(fù)的判斷過(guò)程仅孩,但因?yàn)閰?shù)不同,不能直接用循環(huán)進(jìn)行判斷而要分開(kāi)寫(xiě)成百八十行的代碼的時(shí)候自然就能領(lǐng)會(huì)函數(shù)的妙處~
最后希望大家都能熟悉掌握函數(shù)的概念用法印蓖,并且一定要把C語(yǔ)言學(xué)好學(xué)會(huì)辽慕,這樣對(duì)未來(lái)課程的學(xué)習(xí)中定會(huì)收益無(wú)窮的。最后另伍,馬上期末了鼻百,預(yù)祝大家考試都能順利~至少C語(yǔ)言方面不要有人掛科吧??