C語言的一些特點
更新時間: 2007-02-05 22:48:15來源: 粵嵌教育瀏覽量:883
1、C程序是由函數構成的,一個C源程序至少包括一個函數,一個C源程序有且只有一個名為main()的函數,也可能包含其它函數,因此,函數是C程序的基本單位。主程序通過直接書寫語句和調用其它函數來實現有關功能,這些其它函數可以是由C語言本身提供給我們的(如例3中的_crol_(…)函數),這樣的函數稱之為庫函數,也可以是用戶自己編寫的(如例2、3中用的mDelay(…)函數),這樣的函數稱之為用戶自定義函數。
那么庫函數和用戶自定義函數有什么區別呢?簡單地說,任何使用Keil C語言的人,都可以直接調用C的庫函數而不需要為這個函數寫任何代碼,只需要包含具有該函數說明的相應的頭文件即可;而自定義函數則是完全個性化的,是用戶根據自己需要而編寫的。Keil C提供了100多個庫函數供我們直接使用。
2、一個函數由兩部份組成:
(1)函數的首部、即函數的行。包括函數名、函數類型、函數屬性、函數參數(形參)名、參數類型。
例如:void mDelay (unsigned int DelayTime)
一個函數名后面必須跟一對圓括號,即便沒有任何參數也是如此。
?。?)函數體,即函數首部下面的大括號“{}”內的部份。如果一個函數內有多個大括號,則外層的一對“{}”為函數體的范圍。
函數體一般包括:
聲明部份:在這部份中定義所用到的變量,例1.2中unsigned char j。
執行部份:由若干個語句組成。
在某此情況下也可以沒有聲明部份,甚至即沒有聲明部份,也沒有執行部份,如:
void mDelay() {}
這是一個空函數,什么也不干,但它是合法的。
在編寫程序時,可以利用空函數,比如主程序需要調用一個延時函數,可具體延時多少,怎么個延時法,暫時還不清楚,我們可以主程序的框架結構弄清,先編譯通過,把架子搭起來再說,至于里面的細節,可以在以后慢慢地填,這時利用空函數,先寫這么一個函數,這樣在主程序中就可以調用它了。
3、一個C語言程序,總是從main函數開始執行的,而不管物理位置上這個main()放在什么地方。例1.2中就是放在了,事實上這往往是常用的一種方式。
4、主程序中的mDelay如果寫成mdelay就會編譯出錯,即C語言區分大小寫,這一點往往讓初學者非常困惑,尤其是學過一門其它語言的人,有人喜歡,有人不喜歡,但不管怎樣,你得遵守這一規定。
5、C語言書寫的格式自由,可以在一行寫多個語句,也可以把一個語句寫在多行。沒有行號(但可以有標號),書寫的縮進沒有要求。但是建議讀者自己按一定的規范來寫,可以給自己帶來方便。
6、每個語句和資料定義的必須有一個分號,分號是C語句的必要組成部份。
7、可以用/*…..*/的形式為C程序的任何一部份作注釋,在“/*”開始后,一直到“*/”為止的中間的任何內容都被認為是注釋,所以在書寫特別是修改源程序時特別要注意,有時無意之中刪掉一個“*/”,結果,從這里開始一直要遇到下一個“*/”中的全部內容都被認為是注釋了。原本好好的一個程序,編譯已過通過了,稍作修改,一下出現了幾十甚至上百個錯誤,初學C的人往往對此深感頭痛,這時就要檢查一下,是不是有這樣的情況,如果有的話,趕緊把這個“*/”補上。
特別地,Keil C也支持C++風格的注釋,就是用“//”引導的后面的語句是注釋,例:
P1_0=!P1_0; //取反P1.0
這種風格的注釋,只對本行有效,所以不會出現上面的問題,而且書寫比較方便,所以在只需要一行注釋的時候,我們往往采用這種格式。但要注意,只有Keil C支持這種格式,早期的Franklin C以及PC機上用的TC都不支持這種格式的注釋,用上這種注釋,編譯時通不過,會報告編譯錯誤。