我曾跟大家講過,為了使零基礎(chǔ)的朋友們能夠入門,我們一點一滴地去講c語言的每一個知識點,咱們每天進步一點點,幾個月后,你就會掌握c這門程序設(shè)計語言。
c語言程序文件內(nèi)容大致可以分為四個部分——頭文件的引用、類型定義、全局變量定義和宏定義、函數(shù)聲明、函數(shù)的實現(xiàn)。這四個部分并不是必須全部存在的,需要根據(jù)實際需求來確定。比如我的c文件里用不到任何全局變量,那自然我就不需要定義全局變量。
上圖是一個c語言程序文件,其第1行到第3行是頭文件的引用,第5行和第6行是變量定義,第7行是函數(shù)的聲明。第9行到第25行是main函數(shù)和test函數(shù)的實現(xiàn)。
下面我們來認(rèn)識一下函數(shù)。上圖中我們對函數(shù)有了直觀的認(rèn)識,像main和test這樣能實現(xiàn)某個或某些功能的代碼段稱為函數(shù)。我們把上圖加上標(biāo)注,看看函數(shù)由哪幾部分組成。
圖上標(biāo)注的是test函數(shù)的各個部分名稱,朋友們能自己說出main函數(shù)的各個部分名稱嗎?
值得解釋一下的是函數(shù)的參數(shù)。參數(shù)是可有可無的,參數(shù)個數(shù)也是不確定的,需要根據(jù)實際情況來確定要不要給函數(shù)設(shè)計參數(shù)和設(shè)計幾個參數(shù)。不同參數(shù)之間用逗號分隔,像上圖中的test函數(shù)就有兩個參數(shù),第1個參數(shù)是int型,第2個參數(shù)是char *型,而main函數(shù)沒有參數(shù),沒有參數(shù)的情況參數(shù)位置用void表示。函數(shù)定義中的參數(shù)叫做形參,形參告訴我們調(diào)用它時傳入幾個參數(shù),每個參數(shù)傳入什么類型的數(shù)據(jù)。比如test函數(shù)的第一個參數(shù)是int型的,如果我們調(diào)用它時第一個參數(shù)傳入的不是int型數(shù)據(jù),那編譯的時候編譯器就會報錯,也就是編譯不通過。調(diào)用函數(shù)時傳入的參數(shù)叫做實參,main函數(shù)調(diào)用test函數(shù)時傳入的變量current_id和name_str都是實參。
那么test函數(shù)必須要被main函數(shù)調(diào)用嗎?我們把我們想要的功能都在test函數(shù)里實現(xiàn),不要main函數(shù)了行不行?這里告訴朋友們,那是絕對不行的。即使test函數(shù)里實現(xiàn)了所有我們想要的功能,也是需要被main函數(shù)直接或者間接調(diào)用的。我們所舉例子中main函數(shù)是直接調(diào)用test函數(shù)的,那么什么是間接調(diào)用?比如test函數(shù)被另一個函數(shù)test1調(diào)用了,main函數(shù)調(diào)用了test1函數(shù),也就間接調(diào)用了test函數(shù)。
為什么所有的函數(shù)都需要直接或者間接被main函數(shù)調(diào)用呢?沒有為什么,就是這么規(guī)定的。c語言程序必須從main函數(shù)開始執(zhí)行。也就是說,你編寫的所有函數(shù)中,必須有個函數(shù)名字叫main。如果你想實現(xiàn)一個功能有兩個選擇,一是直接在main函數(shù)里實現(xiàn)你的功能,二是新定義一個函數(shù)來實現(xiàn)你的功能,然后用main函數(shù)調(diào)用這個函數(shù)。
怎么樣?朋友們是不是對c語言的函數(shù)有點感覺了呢?
-
C語言
+關(guān)注
關(guān)注
180文章
7613瀏覽量
137247 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4341瀏覽量
62806
發(fā)布評論請先 登錄
相關(guān)推薦
評論