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