函數(shù)定義的一般形式如下:
函數(shù)值類型 函數(shù)名 (形式參數(shù)列表){
函數(shù)體
}
1) 函數(shù)值類型,就是函數(shù)返回值的類型。在我們后邊的程序中,會有很多函數(shù)中有 return x 這個東西,這個返回值也就是函數(shù)本身的類型。還有一種情況,就是這個函數(shù)只執(zhí)行操作,不需要返回任何值,那么這個時候它的類型就是空類型 void,這個 void 按道理來說是可以省略的,但是一旦省略,Keil 軟件會報一個警告,所以我們通常也不省。
2) 函數(shù)名,可以由任意的字母、數(shù)字和下劃線組成,但數(shù)字不能作為開頭。函數(shù)名不能與其他函數(shù)或者變量重名,也不能是關(guān)鍵字。什么是關(guān)鍵字呢,后邊我們慢慢接觸,比如 char 這類,都是關(guān)鍵字,是我們程序中具備特殊功能的標(biāo)志符,這種東西不可以命名函數(shù)。
3) 形式參數(shù)列表,也叫做形參列表,這個是函數(shù)調(diào)用的時候,相互傳遞數(shù)據(jù)用的。有的函數(shù),我們不需要傳遞參數(shù)給它,那么可以用 void 來替代,void 同樣可以省略,但是那個括號是不能省略的。
4) 函數(shù)體,包含了聲明語句部分和執(zhí)行語句部分。聲明語句部分主要用于聲明函數(shù)內(nèi)部所使用的變量,執(zhí)行語句部分主要是一些函數(shù)需要執(zhí)行的語句。特別注意,所有的聲明語句部分必須放在執(zhí)行語句之前,否則編譯的時候會報錯。
5) 一個工程文件必須有且僅有一個 main 函數(shù),程序執(zhí)行的時候,都是從 main 函數(shù)開始的。
6) 關(guān)于形參和實參的概念,我們后邊再總結(jié),如果遇到程序里有,大家再跟著抄一段時間。先用,后講解,這樣更有利于理解。
我們來回顧一下上節(jié)課的閃爍 LED 程序中的主函數(shù),大家根據(jù)注釋再認(rèn)真分析一遍,是不是對函數(shù)的認(rèn)識就清楚多了。
void main(){ //void 即函數(shù)類型
//以下為聲明語句部分
unsigned int i = 0; //定義一個無符號整型變量 i,并賦初值0
//以下為執(zhí)行語句部分
ENLED = 0; //U3、U4 兩片 74HC138 總使能
ADDR3 = 1; //使能 U3 使之正常輸出
ADDR2 = 1; //經(jīng) U3 的 Y6 輸出開啟三極管 Q16
ADDR1 = 1;
ADDR0 = 0;
while (1){
LED = 0; //點亮小燈
for (i=0; i<30000; i++); //延時一段時間
LED = 1; //熄滅小燈
for (i=0; i<30000; i++); //延時一段時間
}
}
代碼中的“//”是注釋符,意思是說在這之后的內(nèi)容都是注釋。注釋是給程序員自己或其他人看的,用于對程序代碼做一些補充說明,對程序的編譯和執(zhí)行沒有任何影響。