函 數
C程序是由一組或是變量或是函數的外部對象組成的。函數是一個自我包含的完成一定相關功能的執行代碼段。我們可以把函數 看成一個"黑盒子", 你只要將數據送進去就能得到結果, 而函數內部究竟是如何工作的的, 外部程序是不知道的。外部程序所知道 的僅限于輸入給函數什么以及函數輸出什么。函數提供了編制程序的手段, 使之容易讀、寫、理解、排除錯誤、修改和維護。 C程序中函數的數目實際上是不限的, 如果說有什么限制的話, 那就是, 一個C程序中必須至少有一個函數, 而且其中必須有一 個并且僅有一個以main為名, 這個函數稱為主函數, 整個程序從這個主函數開始執行。 C 語言程序鼓勵和提倡人們把一個大問題劃分成一個個子問題, 對應于解決一個子問題編制一個函數, 因此, C 語言程序一般 是由大量的小函數而不是由少量大函數構成的, 即所謂 "小函數構成大程序"。這樣的好處是讓各部分相互充分獨立, 并且任務單 一。因而這些充分獨立的小模塊也可以作為一種固定規格的小"構件", 用來構成新的大程序。 C語言的一個主要特點是可以建立庫函數。Turbo C2.0提供的運行程序庫有400多個函數, 每個函數都完成一定的功能, 可由用 戶隨意調用。這些函數總的分為輸入輸出函數、數學函數、字符串和內存函數、與BIOS和DOS有關的函數、 字符屏幕和圖形功能函 數、過程控制函數、目錄函數等。對這些庫函數應熟悉其功能, 只有這樣才可省去很多不必要的工作。 本教程后半部分專門介紹Turbo C2.0的庫函數, 并對每個函數都給出例程, 讀者可以將自已需要的部分以塊的方式定義, 然后 將此塊寫入文件, 這樣就可以在進入Turbo C2.0集成開發環境后, 直接調用此程序, 連接, 運行, 觀察結果, 以加深對該函數的理 解。 用戶編制Turbo C語言源程序, 就是利用Turbo C的庫函數。可以把所有使用的庫函數放在一個龐大的主函數里, 也可以按不同 功能設計成一個個用戶函數而被其它函數調用。Turbo C2.0建議用戶使用后者, 當用戶編制了一些較常用的函數時, 只要將其存在 函數庫里, 在以后的編程中可被方便的調用而不需要再去編譯它們。連接時將會自動從相應的庫中裝配成所需程序。
1. 函數的說明與定義 Turbo C2.0中所有函數與變量一樣在使用之前必須說明。所謂說明是指說明函數是什么類型的函數, 一般庫函數的說明都包含 在相應的頭文件<*.h>中, 例如標準輸入輸出函數包含在stdio.h中, 非標準輸入輸出函數包含在io.h中, 以后在使用庫函數時必須 先知道該函數包含在什么樣的頭文件中, 在程序的開頭用#include <*.h>或#include"*.h"說明。只有這樣程序在編譯, 連接時 Turbo C 才知道它是提供的庫函數, 否則, 將認為是用戶自己編寫的函數而不能裝配。
1.1 函數說明
1. 經典方式 其形式為: 函數類型 函數名(); 2. ANSI 規定方式 其形式為: 函數類型 函數名(數據類型 形式參數, 數據類型 形式參數, ......); 其中: 函數類型是該函數返回值的數據類型, 可以是以前介紹的整型(int), 長整型(long), 字符型(char), 單浮點型(float), 雙浮點型(double)以及無值型(void), 也可以是指針, 包括結構指針。無值型表示函數沒有返回值。 函數名為Turbo C2.0的標識符, 小括號中的內容為該函數的形式參數說明?梢灾挥袛祿愋投鴽]有形式參數, 也可以兩者都 有。對于經典的函數說明沒有參數信息。如: int putlll(int x,int y,int z,int color,char *p)/*說明一個整型函數*/ char *name(void); /*說明一個字符串指什函數*/ void student(int n, char *str); /*說明一個不返回值的函數*/ float calculate(); /*說明一個浮點型函數*/ 注意: 如果一個函數沒有說明就被調用, 編譯程序并不認為出錯, 而將此函數默認為整型(int)函數。因此當一個函數返回其它 類型, 又沒有事先說明, 編譯時將會出錯。
1.2 函數定義
函數定義就是確定該函數完成什么功能以及怎么運行, 相當于其它語言的一個子程序。Turbo C2.0對函數的定義采用ANSI規定 的方式。即: 函數類型 函數名(數據類型形式參數; 數據類型 形式參數...) { 函數體; |