在上一節中,我們将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
void min() {float a,b,m;
m=a<b?a:b;
/************************************************/
檔案3:file8_3.c
void average()
{float a,b,m;
m=(a+b)/2;
檔案4:file8_4.c
void max();
void min();
void average();
void main()
{
max();
min();
average();
======================================================================================== 在file8_4.c中,在main()之前有3行說明
表示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;
那對{}形成的就是典型的一個複合語句塊。
本文轉自yonghu86 51CTO部落格,原文連結:http://blog.51cto.com/yonghu/1321428,如需轉載請自行聯系原作者