官术网_书友最值得收藏!

3.3 C程序必須有的main函數

先看下面的代碼段,這段代碼是從代碼3-1中截取出來的。為了學習方便,去掉了程序代碼中的頭文件注釋部分。

01      void main(void)
02      {
03              printf("\nHello World!");
04              getchar();                                                      /*防止屏幕一閃而過*/
05      }

【代碼解析】void main(void){…}這一段是定義C程序的主函數。函數是可以完成一定功能的子程序。main函數是C語言程序的起始執行點,每一個C程序必須有且僅有一個main函數。

請讀者思考一個問題:操作系統是如何開始運行、調用一個程序的?也就是說操作系統怎么知道一個程序的入口點在哪里?所謂入口點,就是程序的第一條指令。操作系統調入程序二進制代碼到內存后,從哪條指令開始運行程序呢?

一種辦法是從文件第一行開始,一行一行往下執行,直到文件結束。很多語言就是采用這種方式,比如QBASIC語言。這種方法的好處顯而易見,人類是怎么閱讀的,計算機就是怎么執行的。但是缺點也很多,當有兩個源文件的時候,從哪個文件開始呢?

另一種辦法是和運行程序的啟動者協商一個規定的入口名稱,從這個名稱開始進入。這種方法就是C語言采用的方法。

main函數就是C程序的入口點。無論整個工程有多少個C源文件,必須編寫且只能編寫一個main函數。程序就是從main的第一條語句開始執行,然后在main函數中順序執行其他語句,在這些語句中,調用其他函數,從而使整個程序運行起來。main函數結束了,整個程序也就結束了。由此可見,寫C程序,就是寫main函數。

簡單地說明一下定義函數的語法。對函數的詳細講解請參考后續章節。

對于C語言,定義函數的語法規則如下:

返回值類型  函數名稱( 參數1,參數2…)
{
函數體
}

對比上面的語法規則可以看出,在void main(void)這一行中,第一個void是指main函數的返回值數據類型,void表示main函數僅僅完成某些功能,不向調用者返回數值。main是函數名稱。函數可以是C語言系統提供的系統函數,也可以是用戶自己編寫的函數。用戶自己編寫的函數,函數名字可以自行決定。main后面是小括號對“()”,括號里是傳遞給函數的參數。類似代數里的函數y=f(x)一樣,其中x就是參數,f是函數名稱。參數可以沒有,可以是一個,也可以是多個。每個參數都有一個數據類型。本例中的參數的數據類型是void,表示main函數不需要參數。小括號后面緊接著的是大括號對“{}”,大括號對里的代碼就是main函數實現的功能,被稱作函數體。對于在函數體里能做哪些事情也是有規定的。會在函數一章里詳細說明。

留給讀者以下3個試驗:

(1)編寫一個空的main函數。

(2)修改main函數的名稱。

(3)編寫兩個main函數。

請分別在計算機上編譯、連接、運行、編輯這3個試驗,并觀察發生的現象。

主站蜘蛛池模板: 罗江县| 宁安市| 吉隆县| 法库县| 德化县| 治县。| 平和县| 鲜城| 大宁县| 安新县| 金阳县| 邵武市| 山丹县| 湖南省| 武强县| 通渭县| 安泽县| 遵义市| 永春县| 遵化市| 珠海市| 伊金霍洛旗| 鹤壁市| 通辽市| 平阴县| 蒙山县| 中宁县| 临海市| 德令哈市| 英德市| 公主岭市| 公主岭市| 蕉岭县| 白水县| 珠海市| 沁源县| 内江市| 海南省| 喀什市| 慈溪市| 嘉鱼县|