C程序是由一組或是變量或是函數(shù)的外部對(duì)象組成的。 函數(shù)是一個(gè)自我包含的完成一定相關(guān)功能的執(zhí)行代碼段。我們可以把函數(shù)看成一個(gè)"黑盒子", 你只要將數(shù)據(jù)送進(jìn)去就能得到結(jié)果, 而函數(shù)內(nèi)部究竟是如何工作的的, 外部程序是不知道的。
外部程序所知道的僅限于輸入給函數(shù)什么以及函數(shù)輸出什么。函數(shù)提供了編制程序的手段, 使之容易讀、寫(xiě)、理解、排除錯(cuò)誤、修改和維護(hù)。
C程序中函數(shù)的數(shù)目實(shí)際上是不限的, 如果說(shuō)有什么限制的話, 那就是, 一個(gè)C程序中必須至少有一個(gè)函數(shù), 而且其中必須有一個(gè)并且僅有一個(gè)以main為名, 這個(gè)函數(shù)稱為主函數(shù), 整個(gè)程序從這個(gè)主函數(shù)開(kāi)始執(zhí)行。
C 語(yǔ)言程序鼓勵(lì)和提倡人們把一個(gè)大問(wèn)題劃分成一個(gè)個(gè)子問(wèn)題, 對(duì)應(yīng)于解決一個(gè)子問(wèn)題編制一個(gè)函數(shù), 因此, C 語(yǔ)言程序一般是由大量的小函數(shù)而不是由少量大函數(shù)構(gòu)成的, 即所謂"小函數(shù)構(gòu)成大程序"。這樣的好處是讓各部分相互充分獨(dú)立,并且任務(wù)單一。因而這些充分獨(dú)立的小模塊也可以作為一種固定規(guī)格的小"構(gòu)件", 用來(lái)構(gòu)成新的大程序。
C語(yǔ)言的一個(gè)主要特點(diǎn)是可以建立庫(kù)函數(shù)。Turbo C2.0提供的運(yùn)行程序庫(kù)有400多個(gè)函數(shù), 每個(gè)函數(shù)都完成一定的功能, 可由用戶隨意調(diào)用。這些函數(shù)總的分為輸入輸出函數(shù)、數(shù)學(xué)函數(shù)、字符串和內(nèi)存函數(shù)、與BIOS和DOS有關(guān)的函數(shù)、 字符屏幕和圖形功能函數(shù)、過(guò)程控制函數(shù)、目錄函數(shù)等。對(duì)這些庫(kù)函數(shù)應(yīng)熟悉其功能, 只有這樣才可省去很多不必要的工作。
本教程后半部分專門介紹Turbo C2.0的庫(kù)函數(shù), 并對(duì)每個(gè)函數(shù)都給出例程, 讀者可以將自已需要的部分以塊的方式定義, 然后將此塊寫(xiě)入文件, 這樣就可以在進(jìn)入Turbo C2.0集成開(kāi)發(fā)環(huán)境后, 直接調(diào)用此程序, 連接, 運(yùn)行, 觀察結(jié)果, 以加深對(duì)該函數(shù)的理解。
用戶編制Turbo C語(yǔ)言源程序, 就是利用Turbo C的庫(kù)函數(shù)。可以把所有使用的庫(kù)函數(shù)放在一個(gè)龐大的主函數(shù)里, 也可以按不同功能設(shè)計(jì)成一個(gè)個(gè)用戶函數(shù)而被其它函數(shù)調(diào)用。Turbo C2.0建議用戶使用后者, 當(dāng)用戶編制了一些較常用的函數(shù)時(shí),只要將其存在函數(shù)庫(kù)里, 在以后的編程中可被方便的調(diào)用而不需要再去編譯它們。連接時(shí)將會(huì)自動(dòng)從相應(yīng)的庫(kù)中裝配成所需程序。
1. 函數(shù)的說(shuō)明與定義
Turbo C2.0中所有函數(shù)與變量一樣在使用之前必須說(shuō)明。所謂說(shuō)明是指說(shuō)明函數(shù)是什么類型的函數(shù), 一般庫(kù)函數(shù)的說(shuō)明都包含在相應(yīng)的頭文件<*.h>中, 例如標(biāo)準(zhǔn)輸入輸出函數(shù)包含在stdio.h中, 非標(biāo)準(zhǔn)輸入輸出函數(shù)包含在io.h中, 以后在使用庫(kù)函數(shù)時(shí)必須先知道該函數(shù)包含在什么樣的頭文件中, 在程序的開(kāi)頭用#include<*.h>或#include"*.h"說(shuō)明。只有這樣程序在編譯, 連接時(shí)Turbo C 才知道它是提供的庫(kù)函數(shù), 否則, 將認(rèn)為是用戶自己編寫(xiě)的函數(shù)而不能裝配。
1.1 函數(shù)說(shuō)明
1. 經(jīng)典方式
其形式為: 函數(shù)類型 函數(shù)名();
2. ANSI 規(guī)定方式
其形式為: 函數(shù)類型 函數(shù)名(數(shù)據(jù)類型 形式參數(shù), 數(shù)據(jù)類型 形式參數(shù), ......);
其中: 函數(shù)類型是該函數(shù)返回值的數(shù)據(jù)類型, 可以是以前介紹的整型(int), 長(zhǎng)整型(long), 字符型(char), 單浮點(diǎn)型(float), 雙浮點(diǎn)型(double)以及無(wú)值型(void), 也可以是指針, 包括結(jié)構(gòu)指針。無(wú)值型表示函數(shù)沒(méi)有返回值。
函數(shù)名為Turbo C2.0的標(biāo)識(shí)符, 小括號(hào)中的內(nèi)容為該函數(shù)的形式參數(shù)說(shuō)明。可以只有數(shù)據(jù)類型而沒(méi)有形式參數(shù), 也可以兩者都有。對(duì)于經(jīng)典的函數(shù)說(shuō)明沒(méi)有參數(shù)信息。如:
int putlll(int x,int y,int z,int color,char *p)/*說(shuō)明一個(gè)整型函數(shù)*/
char *name(void); /*說(shuō)明一個(gè)字符串指什函數(shù)*/
void student(int n, char *str); /*說(shuō)明一個(gè)不返回值的函數(shù)*/
float calculate(); /*說(shuō)明一個(gè)浮點(diǎn)型函數(shù)*/
注意: 如果一個(gè)函數(shù)沒(méi)有說(shuō)明就被調(diào)用, 編譯程序并不認(rèn)為出錯(cuò), 而將此函數(shù)默認(rèn)為整型(int)函數(shù)。因此當(dāng)一個(gè)函數(shù)返回其它類型, 又沒(méi)有事先說(shuō)明, 編譯時(shí)將會(huì)出錯(cuò)。
1.2 函數(shù)定義
函數(shù)定義就是確定該函數(shù)完成什么功能以及怎么運(yùn)行, 相當(dāng)于其它語(yǔ)言的一個(gè)子程序。Turbo C2.0對(duì)函數(shù)的定義采用ANSI規(guī)定的方式。即:
函數(shù)類型 函數(shù)名(數(shù)據(jù)類型形式參數(shù); 數(shù)據(jù)類型 形式參數(shù)...)
{
函數(shù)體;
}
其中函數(shù)類型和形式參數(shù)的數(shù)據(jù)類型為Turbo C2.0的基本數(shù)據(jù)類型。函數(shù)體為Turbo C2.0提供的庫(kù)函數(shù)和語(yǔ)句以及其它用戶自定義函數(shù)調(diào)用語(yǔ)句的組合, 并包括在一對(duì)花括號(hào)"{"和"}"中。
需要指出的是一個(gè)程序必須有一個(gè)主函數(shù), 其它用戶定義的子函數(shù)可以是任意多個(gè), 這些函數(shù)的位置也沒(méi)有什么限制, 可以在main()函數(shù)前, 也可以在其后。
Turbo C2.0將所有函數(shù)都被認(rèn)為是全局性的。而且是外部的, 即可以被另一個(gè)文件中的任何一個(gè)函數(shù)調(diào)用。
2 函數(shù)的調(diào)用
2.1 函數(shù)的簡(jiǎn)單調(diào)用
Turbo C2.0調(diào)用函數(shù)時(shí)直接使用函數(shù)名和實(shí)參的方法, 也就是將要賦給被調(diào)用函數(shù)的參量, 按該函數(shù)說(shuō)明的參數(shù)形式傳遞過(guò)去, 然后進(jìn)入子函數(shù)運(yùn)行, 運(yùn)行結(jié)束后再按子函數(shù)規(guī)定的數(shù)據(jù)類型返回一個(gè)值給調(diào)用函數(shù)。使用Turbo C2.0的庫(kù)函數(shù)就是函數(shù)簡(jiǎn)單調(diào)用的方法。舉例說(shuō)明如下:
例1:
#include
int maxmum(int x, int y, int z); /*說(shuō)明一個(gè)用戶自定義函數(shù)*/
int main()
{
int i, j, k;
printf("i, j, k=?\n");
scanf("%4d%4d%4d", &i, &j, &k);
maxmum(i, j, k);
getch();
return 0;
}
maxmum(int x, int y, int z)
{
int max;
max=x>y?x:y;
max=max>z?max:z;
printf("The maxmum value of the 3 data is %d\n", max);
}
相關(guān)推薦:計(jì)算機(jī)等考二級(jí)C語(yǔ)言備考:C語(yǔ)言/C++編譯過(guò)程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |