從整體上看,C語言代碼是由一個一個的函數構成的,除了定義和說明類的語句(例如變量定義、宏定義、類型定義等)可以放在函數外面,所有具有運算或邏輯處理能力的語句(例如加減乘除、if else、for、函數調用等)都要放在函數內部。
例如,下面的代碼就是錯誤的:
#include <stdio.h>
int a = 10;
int b = a + 20;
int main(){
return 0;
}
int b = a + 20;
是具有運算功能的語句,要放在函數內部。
但是下面的代碼就是正確的:
#include <stdio.h>
int a = 10;
int b = 10 + 20;
int main(){
return 0;
}
int b = 10 + 20;
在編譯時會被優化成
int b = 30;
,消除加法運算。
在所有的函數中,main() 是入口函數,有且只能有一個,C語言程序就是從這裡開始運行的。
C語言不但提供了豐富的庫函數,還允許用戶定義自己的函數。每個函數都是一個可以重復使用的模塊,通過模塊間的相互調用,有條不紊地實現復雜的功能。可以說C程序的全部工作都是由各式各樣的函數完成的,所以也把C語言稱為函數式語言。
標准C語言(ANSI C)共定義了15 個頭文件,稱為“C標准庫”,所有的編譯器都必須支持,如何正確並熟練的使用這些標准庫,可以反映出一個程序員的水平。
-
合格程序員:<stdio.h>、<ctype.h>、<stdlib.h>、<string.h>
-
熟練程序員:<assert.h>、<limits.h>、<stddef.h>、<time.h>
-
優秀程序員:<float.h>、<math.h>、<error.h>、<locale.h>、<setjmp.h>、<signal.h>、<stdarg.h>
以上各類函數不僅數量眾多,而且有的還需要硬件知識才能使用,初學者要想全部掌握得需要一個較長的學習過程。我的建議是先掌握一些最基本、最常用的函數,在實踐過程中再逐步深入。由於課時關系,本教程只介紹了很少一部分庫函數,其余部分讀者可根據需要查閱C語言函數手冊,網址是 http://www.cplusplus.com。
還應該指出的是,C語言中所有的函數定義,包括主函數 main() 在內,都是平行的。也就是說,在一個函數的函數體內,不能再定義另一個函數,即不能嵌套定義。但是函數之間允許相互調用,也允許嵌套調用。習慣上把調用者稱為主調函數,被調用者稱為被調函數。函數還可以自己調用自己,稱為遞歸調用。
main() 函數是主函數,它可以調用其它函數,而不允許被其它函數調用。因此,C程序的執行總是從 main() 函數開始,完成對其它函數的調用後再返回到 main() 函數,最後由 main() 函數結束整個程序。