資源描述:
《C語言頭文件的使用.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、C語言頭文件的使用??????????????????????????????????????????????????????????????????——by janders?????????????????????????????????????????????????????????????????????轉(zhuǎn)載請(qǐng)注名作者和出處,謝謝!轉(zhuǎn)自http://blog。csdn.net/janders/Gallery/179942.a(chǎn)spxC語言中的.h文件和我認(rèn)識(shí)由來已久,其使用方法雖不十分復(fù)雜,但我卻是經(jīng)過了幾個(gè)月的“不懂”時(shí)期,幾年的“一知半解”時(shí)期才逐漸認(rèn)
2、識(shí)清楚他的本來面目。揪其原因,我的駑鈍和好學(xué)而不求甚解固然是原因之一,但另外還有其他原因。原因一:對(duì)于較小的項(xiàng)目,其作用不易被充分開發(fā),換句話說就是即使不知道他的詳細(xì)使用方法,項(xiàng)目照樣進(jìn)行,程序在計(jì)算機(jī)上照樣跑.原因二:現(xiàn)在的各種C語言書籍都是只對(duì)C語言的語法進(jìn)行詳細(xì)的不能再詳細(xì)的說明,但對(duì)于整個(gè)程序的文件組織構(gòu)架卻只字不提,找了好幾本比較著名的C語言著作,卻沒有一個(gè)把.h文件的用法寫的比較透徹的。下面我就斗膽提筆,來按照我對(duì).h的認(rèn)識(shí)思路,向大家介紹一下。?讓我們的思緒乘著時(shí)間機(jī)器回到大學(xué)一年級(jí).C原來老師正在講臺(tái)上講著我們的第一個(gè)C語言程序:Hellowo
3、rld!文件名First.cmain(){printf(“Helloworld!”);} 例程-1看看上面的程序,沒有。h文件.是的,就是沒有,世界上的萬物都是經(jīng)歷從沒有到有的過程的,我們對(duì).h的認(rèn)識(shí),我想也需要從這個(gè)步驟開始.這時(shí)確實(shí)不需要.h文件,因?yàn)檫@個(gè)程序太簡單了,根本就不需要.那么如何才能需要呢?讓我們把這個(gè)程序變得稍微復(fù)雜些,請(qǐng)看下面這個(gè),文件名First。c?printStr(){?printf(“Helloworld!");}main(){printStr()} 例程—2?還是沒有,那就讓我們把這個(gè)程序再稍微改動(dòng)一下.?文件名First.c
4、main(){printStr()}??printStr(){ ?printf(“Helloworld!”);} 例程-3?等等,不就是改變了個(gè)順序嘛, 但結(jié)果確是十分不同的.讓我們編譯一下例程—2和例程-3,你會(huì)發(fā)現(xiàn)例程-3是編譯不過的.這時(shí)需要我們來認(rèn)識(shí)一下另一個(gè)C語言中的概念:作用域.我們?cè)谶@里只講述與。h文件相關(guān)的頂層作用域, 頂層作用域就是從聲明點(diǎn)延伸到源程序文本結(jié)束,就printStr()這個(gè)函數(shù)來說,他沒有單獨(dú)的聲明,只有定義,那么就從他定義的行開始,到first.c文件結(jié)束,也就是說,在在例程—2的main()函數(shù)的引用點(diǎn)上,已經(jīng)是他的作用域
5、。例程-3的main()函數(shù)的引用點(diǎn)上,還不是他的作用域,所以會(huì)編譯出錯(cuò). 這種情況怎么辦呢?有兩種方法,一個(gè)就是讓我們回到例程—2,順序?qū)ξ覀儊碚f沒什么,誰先誰后不一樣呢,只要能編譯通過,程序能運(yùn)行, 就讓main()文件總是放到最后吧。那就讓我們來看另一個(gè)例程,讓我們看看這個(gè)方法是不是在任何時(shí)候都會(huì)起作用.文件名First.cplay2(){ play1()}play1(){play2()??}main(){play1()}例程-4?也許大部分都會(huì)看出來了,這就是經(jīng)常用到的一種算法,函數(shù)嵌套,那么讓我們看看, play1和play2這兩個(gè)函數(shù)哪個(gè)放到前面呢
6、??這時(shí)就需要我們來使用第二種方法,使用聲明。文件名 First。cplay1();play2();play2(){ play1()}play1(){ play2());}main(){play1()}例程-4?經(jīng)歷了我的半天的嘮叨, 加上四個(gè)例程的說明,我們終于開始了用量變引起的質(zhì)變, 這篇文章的主題。h文件快要出現(xiàn)了.一個(gè)大型的軟件項(xiàng)目,可能有幾千個(gè),上萬個(gè)play,而不只是play1,play2這么簡單,這樣就可能有N個(gè)類似play1(); play2();這樣的聲明,這個(gè)時(shí)候就需要我們想辦法把這樣的play1();play2();也另行管理,而不是把他
7、放在.c文件中,于是.h文件出現(xiàn)了。?文件名First.hplay1();play2();文件名First.C#include“first。h”play2(){ play1()}play1(){?play2()}main(){play1()}例程-4?各位有可能會(huì)說,這位janders大蝦也太羅嗦了,上面這些我也知道,你還講了這么半天,請(qǐng)?jiān)?如果說上面的內(nèi)容80%的人都知道的話,那么我保證,下面的內(nèi)容,80%的人都不完全知道.而且這也是我講述一件事的一貫作風(fēng),我總是想把一個(gè)東西說明白,讓那些剛剛接觸C的人也一樣明白。上面是.h文件的最基本的功能,那么.h文件
8、還有什么別的功能呢? 讓我來描述一下我