4. C語言提供了極為豐富的庫函數(shù), 這些庫函數(shù)又可從功能角度作以下分類。
(1)字符類型分類函數(shù)
用于對字符按ASCII碼分類:字母,數(shù)字,控制字符,分隔符,大小寫字母等。
(2)轉換函數(shù)
用于字符或字符串的轉換;在字符量和各類數(shù)字量 (整型, 實型等)之間進行轉換;在大、小寫之間進行轉換。
(3)目錄路徑函數(shù)
用于文件目錄和路徑操作。
(4)診斷函數(shù)
用于內部錯誤檢測。
(5)圖形函數(shù)
用于屏幕管理和各種圖形功能。
(6)輸入輸出函數(shù)
用于完成輸入輸出功能。
(7)接口函數(shù)
用于與DOS,BIOS和硬件的接口。
(8)字符串函數(shù)
用于字符串操作和處理。
(9)內存管理函數(shù)
用于內存管理。
(10)數(shù)學函數(shù)
用于數(shù)學函數(shù)計算。
(11)日期和時間函數(shù)
用于日期,時間轉換操作。
(12)進程控制函數(shù)
用于進程管理和控制。
(13)其它函數(shù)
用于其它各種功能。
以上各類函數(shù)不僅數(shù)量多,而且有的還需要硬件知識才會使用,因此要想全部掌握則需要一個較長的學習過程。 應首先掌握一些最基本、 最常用的函數(shù),再逐步深入。由于篇幅關系,本書只介紹了很少一部分庫函數(shù), 其余部分讀者可根據(jù)需要查閱有關手冊。
還應該指出的是,在C語言中,所有的函數(shù)定義,包括主函數(shù)main在內,都是平行的。也就是說,在一個函數(shù)的函數(shù)體內, 不能再定義另一個函數(shù), 即不能嵌套定義。但是函數(shù)之間允許相互調用,也允許嵌套調用。習慣上把調用者稱為主調函數(shù)。 函數(shù)還可以自己調用自己,稱為遞歸調用。main 函數(shù)是主函數(shù),它可以調用其它函數(shù),而不允許被其它函數(shù)調用。 因此,C程序的執(zhí)行總是從main函數(shù)開始, 完成對其它函數(shù)的調用后再返回到main函數(shù),最后由main函數(shù)結束整個程序。一個C源程序必須有,也只能有一個主函數(shù)main。
函數(shù)定義的一般形式
1.無參函數(shù)的一般形式
類型說明符 函數(shù)名()
{
類型說明
語句
}
其中類型說明符和函數(shù)名稱為函數(shù)頭。 類型說明符指明了本函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型。 該類型說明符與第二章介紹的各種說明符相同。 函數(shù)名是由用戶定義的標識符,函數(shù)名后有一個空括號,其中無參數(shù),但括號不可少。{} 中的內容稱為函數(shù)體。在函數(shù)體中也有類型說明, 這是對函數(shù)體內部所用到的變量的類型說明。在很多情況下都不要求無參函數(shù)有返回值, 此時函數(shù)類型符可以寫為void。
我們可以改為一個函數(shù)定義:
void Hello()
{
printf ("Hello,world \n");
}
這里,只把main改為Hello作為函數(shù)名,其余不變。Hello函數(shù)是一個無參函數(shù),當被其它函數(shù)調用時,輸出Hello world字符串。
2.有參函數(shù)的一般形式
類型說明符 函數(shù)名(形式參數(shù)表)
型式參數(shù)類型說明
{
類型說明
語句
}
有參函數(shù)比無參函數(shù)多了兩個內容,其一是形式參數(shù)表,其二是形式參數(shù)類型說明。在形參表中給出的參數(shù)稱為形式參數(shù),它們可以是各種類型的變量,各參數(shù)之間用逗號間隔。在進行函數(shù)調用時,主調函數(shù)將賦予這些形式參數(shù)實際的值。 形參既然是變量,當然必須給以類型說明。例如,定義一個函數(shù), 用于求兩個數(shù)中的大數(shù),可寫為:
int max(a,b)
int a,b;
{
if (a>b) return a;
else return b;
}
第一行說明max函數(shù)是一個整型函數(shù),其返回的函數(shù)值是一個整數(shù)。形參為a,b。第二行說明a,b均為整型量。 a,b的具體值是由主調函數(shù)在調用時傳送過來的。在{}中的函數(shù)體內, 除形參外沒有使用其它變量,因此只有語句而沒有變量類型說明。 上邊這種定義方法稱為“傳統(tǒng)格式”。這種格式不易于編譯系統(tǒng)檢查,從而會引起一些非常細微而且難于跟蹤的錯誤。ANSI C 的新標準中把對形參的類型說明合并到形參表中,稱為“現(xiàn)代格式”。
例如max函數(shù)用現(xiàn)代格式可定義為:
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
現(xiàn)代格式在函數(shù)定義和函數(shù)說明(后面將要介紹)時, 給出了形式參數(shù)及其類型,在編譯時易于對它們進行查錯, 從而保證了函數(shù)說明和定義的一致性。例1.3即采用了這種現(xiàn)代格式。 在max函數(shù)體中的return語句是把a(或b)的值作為函數(shù)的值返回給主調函數(shù)。有返回值函數(shù)中至少應有一個return語句。 在C程序中,一個函數(shù)的定義可以放在任意位置, 既可放在主函數(shù)main之前,也可放在main之后。例如例1.3中定義了一個max 函數(shù),其位置在main之后, 也可以把它放在main之前。
修改后的程序如下所示。
int max(int a,int b)
{
if(a>b)return a;
else return b;
}
void main()
{
int max(int a,int b);
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
現(xiàn)在我們可以從函數(shù)定義、 函數(shù)說明及函數(shù)調用的角度來分析整個程序,從中進一步了解函數(shù)的各種特點。程序的第1行至第5行為max函數(shù)定義。進入主函數(shù)后,因為準備調用max函數(shù),故先對max函數(shù)進行說明(程序第8行)。函數(shù)定義和函數(shù)說明并不是一回事,在后面還要專門討論。 可以看出函數(shù)說明與函數(shù)定義中的函數(shù)頭部分相同,但是末尾要加分號。程序第12 行為調用max函數(shù),并把x,y中的值傳送給max的形參a,b。max函數(shù)執(zhí)行的
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |