天天看點

第8章 函數(二)工程的誕生

 在上一節中,我們将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,如需轉載請自行聯系原作者

繼續閱讀