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

3.2 C語言的main( )函數

C語言程序總是從main( )函數開始執行的。main( )函數屬于一種特殊的函數,整個C語言編寫的程序可以看作若干函數的集合。

利用函數可以方便地對C語言程序代碼進行封裝和擴充。函數的本質是 C語言中的一種代碼塊,各函數之間相互獨立,而又可以進行互相調用,各函數都應符合圖3-2中所示的形式。

圖3-2 C語言函數格式及示例

圖3-2為C語言函數的格式,可以看出函數名稱的前面為該函數的返回值類型,后面為參數列表。參數列表由一對小括號包含,可以為空。函數的主體實現由一對大括號包括,整個函數的結構很簡潔。

圖3-2還給出了一個簡單的函數舉例,該函數的名稱為main,沒有參數列表,返回值類型為int型。

一個 C語言程序必須有一個名稱為 main的函數。圖3-3給出了一個 main( )函數經過編譯后的代碼以及運行原理示意圖。

圖3-3 C語言程序入口位置示意圖

在圖3-3中所示的代碼中,介于“/*”和“*/”之間的部分是程序的注釋,也就是方便編程人員理解程序使用的。在編譯鏈接環節,注釋是不會被解釋成二進制代碼的,因此注釋不具有任何可執行性。圖3-3所示的程序可以正常編譯和運行,但是沒有任何運行結果,這是因為程序中沒有任何程序代碼。

作為對比,圖3-4中給出了在Keil μVision中編寫的一個僅含有main( )函數的C語言程序。程序將從第3行的main( )函數開始執行。第4行和第12行的一對大括號之間的語句為main( )函數的內容。

圖3-4 在Keil μVision中編寫C語言程序

圖3-4中給出的示例中,第1條語句設置編譯時使用的頭文件。第3條語句為main( )函數的入口,程序將從此處開始運行。第4條語句的大括號為main( )函數內容的開始。第5條語句執行函數SystemInit,該函數在包含的頭文件中有聲明。

程序第7條語句為永久循環語句。第8條語句和第11條語句的一對大括號構成了一個循環語句塊。具體來說,當第7條語句中的表達式成立的時候,將會執行循環語句塊里的內容。執行完畢則重新判斷第7條語句中的表達式是否成立,若成立則會再次執行循環語句塊里的內容。當第7條語句中的表達式不成立時,則會執行第11條語句的下一條語句。

C語言中判斷表達式成立與否是通過將表達式求值后進行的,若求值后的數值為1,則表示表達式成立,否則表示表達式不成立。而圖3-4中,第7條語句“while(1)”中括號內的數值為1,即恒成立。因此第8條語句的“{”和第11條語句的“}”構成了一個語句塊里的代碼會永遠循環執行。

由于采用C語言編寫的代碼和經過編譯、鏈接后形成的二進制代碼在邏輯上是相同的,所以今后對C語言程序的解釋亦即對相應的可執行代碼的解釋。本書會以變量、關鍵詞、函數為主題,對C語言編程的相關知識進行介紹。

主站蜘蛛池模板: 吴忠市| 金湖县| 韩城市| 虎林市| 根河市| 砚山县| 苍梧县| 大方县| 永新县| 扶风县| 大港区| 宁强县| 长丰县| 和静县| 荆门市| 屏东县| 黔江区| 石林| 鹤庆县| 芮城县| 江陵县| 民权县| 灵川县| 呼玛县| 十堰市| 巴彦县| 泗水县| 安多县| 台南县| 文水县| 东丽区| 察哈| 温宿县| 高陵县| 黔江区| 吴江市| 吴忠市| 漯河市| 郑州市| 文安县| 高州市|