函 數(shù)
C程序是由一組或是變量或是函數(shù)的外部對象組成的。函數(shù)是一個自我包含的完成一定相關(guān)功能的執(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有關(guān)的函數(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ù)體; |