| 聲明:文中觀點僅代表個人,其中文字、圖片未經本人許可,不得部分或全部轉載,違者所造成影響後後果自負!聯絡本人方式:80368704@qq.com QQ:80368704 在上一節中,我們將3個程式檔案file1.c、file2.c、file3.c合并成了file4.c(即程式4),程式4中有4個函數:1個主函數,3個子函數。 合并過程簡單描述就是: 1、file1.c、file2.c、file3.c拷貝到一個檔案file4.c中 2、把從file1.c拷入的main改成max 3、把從file2.c拷入的main改成min 4、把從file3.c拷入的main改成average 5、在file4.c中再新寫一個main()函數,調用上面的3個函數 我們看到,4個函數是在一個檔案file4.c中的。 其實,說白了, 3合1的目的,就是希望只運行1次,就能實現以前運行3個程式完成的任務:求最大值、最小值和平均值,那麼這裡,有一個更簡便的辦法實現程式的3合1,標準C允許我們的一個程式有多個檔案, 於是,現在,我們要將(程式1,程式2和程式3)這3個程式重新合并,產生一個全新的程式(程式8),合并過程有4步描述如下: 1、把從file1.c的main改成max,為不破壞file1.c,另存新檔file8_1.c吧 2、把從file2.c的main改成min,同理另存新檔file8_2.c 3、把從file3.c的main改成average,同理另存新檔file8_3.c 4、建立檔案file8_4.c,其中再新寫一個main()函數,調用上面的3個函數 我們看到,4個函數是分別在4個檔案中的。 我們稱它為程式8吧,如下所示: 程式8: ================================================================ /********************************************************/ 檔案1:file8_1.c #include〈stdio.h〉 void max() {float a,b,m; scanf("%f%f",&a,&b); m=a>b?a:b; printf("%f/n",m); } /********************************************************/ 檔案2:file8_2.c #include〈stdio.h〉 void min() {float a,b,m; scanf("%f%f",&a,&b); m=a<b?a:b; printf("%f/n",m); } /************************************************/ 檔案3:file8_3.c #include〈stdio.h〉 void average() {float a,b,m; scanf("%f%f",&a,&b); m=(a+b)/2; printf("%f/n",m); } /********************************************************/ 檔案4:file8_4.c void max(); void min(); void average(); void main() { max(); min(); average(); } ================================================================ 關於程式8的產生過程的進一步說明 ======================================================================================== 在file8_4.c中,在main()之前有3行說明 void max(); void min(); void average(); 表示main()即將調用的函數max()、min()、average() 你看出來了嗎?這3句和程式中的3個子函數有關係,其實就是3個子函數的函數首部,加了一個分號(;)。你一定要記住在程式中,用函數首部說明一個函數是非常重要的,是必須的,千萬不要省略它們;這種做法,在術語上叫函數原型聲明。只要有了上面的3個函數說明,就允許這些被調函數和主函數不在一個檔案中了,當然和main()在一個檔案中也是可以的.通常被調函數的原型聲明應放在主調函數所在檔案的開頭。 ======================================================================================== 我們看到,這樣的合并其實是更簡單些,而且,我們也只需要運行一次就可以求3個值了。 聰明的你可能在疑惑,以前我們寫程式時,都是把程式碼輸入電腦,而後編譯串連運行,成功後,儲存成一個檔案;但現在的程式8卻是由4個檔案組成的。 一個程式是有多個檔案組成,這個程式不簡單了吧,我們平時把複雜一點的事情,叫做工程,比如要蓋樓房,就叫建築工程。同理當一個程式是由多個檔案組成時,就比以前一個程式是由一個檔案組成複雜了,於是在程式設計中,我們把由多檔案組成的程式稱為工程 複雜的C程式是一個工程,該工程包含一個或多個檔案,一個檔案又主要包含若干個變數和函數。函數中又有很多複合陳述式塊。 因此C程式分4級:工程----檔案-----函數------複合陳述式塊。 還記得什麼是複合陳述式塊嗎?好吧,讓我們回憶一下,我先把第六章的一段原文摘錄在下面: =============================================================================================
============================================================================================= 前面我們說過,用{}把一些語句括起來就成了複合陳述式。比如上面求5!程式中,右下方的那段: if(i<=5) { p=p*i; i=i+1; goto s3; } 那對{}形成的就是典型的一個複合陳述式塊。 |