一個(gè)簡(jiǎn)單程序的結(jié)構(gòu)
你已經(jīng)看過一個(gè)具體的例子,下面可以了解一些 C程序的基本規(guī)則了。
程序由一個(gè)或多個(gè)函數(shù)組成,其中一定有一個(gè)名為 main()的函數(shù)。函數(shù)的描述由函數(shù)頭和函數(shù)體組成。函數(shù)頭包括預(yù)處理語(yǔ)句#include和函數(shù)名??梢酝ㄟ^圓括號(hào)識(shí)別一個(gè)函數(shù)名。而函數(shù)體位于花括號(hào) { }中,并由一系列語(yǔ)句組成,每個(gè)語(yǔ)句以一個(gè);結(jié)束 。
一個(gè)包含函數(shù)頭和函數(shù)體的函數(shù)
上面的例子中包含一個(gè)聲明語(yǔ)句,指出所使用的變量名和類型。然后是一個(gè)賦值語(yǔ)句,給變量賦一個(gè)值。接著,是1個(gè)輸出語(yǔ)句,調(diào)用 printf()函數(shù)。最后,main()由一個(gè) return 語(yǔ)句結(jié)束。
程序的可讀性
讓程序具有可讀性是一個(gè)良好的編程習(xí)慣。一個(gè)可讀的程序更易于理解,而且可以更容易地修改它。使程序可讀還有助于你自己對(duì)程序所做的事情概念更清楚。
前面我們都已經(jīng)知道了兩種提高可讀性的技巧:
● 選擇有意義的變量名
● 使用注釋
請(qǐng)注意這兩種技巧的互補(bǔ)性。如果變量名是 width(寬度),就不需要用注釋來說明該變量表示寬度,但是如果變量名是 video_routine_4,那么就需要解釋一下 video routine 4的具體意義了。
第三個(gè)技巧是使用空行分隔一個(gè)函數(shù)的多個(gè)部分。例如,前面那個(gè)簡(jiǎn)單的示例程序就使用一個(gè)空行來分隔定義部分和動(dòng)作部分。 C不要求有這個(gè)空行,但它可以增加程序的可讀性。
第四個(gè)技巧就是每個(gè)語(yǔ)句盡量都只用一行。同樣,這也是提高可讀性的一個(gè)約定,而不是 C語(yǔ)言的要求。C的格式比較自由,你可以把多個(gè)語(yǔ)句放在一行或把一個(gè)語(yǔ)句分成好多行。
下面的語(yǔ)句對(duì)于編譯器來說是合法的,但是非 常 不 好 看:
事實(shí)上如果你在公司里寫代碼如果是這種風(fēng)格的話,你第二天就會(huì)被項(xiàng)目經(jīng)理辭退,還會(huì)狠狠的罵一頓教你C語(yǔ)言的人,雖然他可能不知道是誰(shuí)教的你C語(yǔ)言!
變量的多個(gè)聲明
在一個(gè)程序中,需要實(shí)現(xiàn)的功能越多,那么所定義的變量就會(huì)越多,這時(shí)候我們通??梢栽谝粋€(gè)聲明語(yǔ)句里聲明兩個(gè)變量。為此,在聲明語(yǔ)句中需要用一個(gè)逗號(hào)把兩個(gè)變量 分開。也就是說,
int a,b;
和
int a;
int b;
所表達(dá)的意思是完全相同的,只是所書寫的方式不一樣。
程序的多個(gè)函數(shù)
到目前為止,這些程序中只有一個(gè)main函數(shù)的函數(shù)體,那么除了 main()函數(shù)之外,怎樣把你自己的函數(shù)加入到程序中呢。
我們來看看下面的例子
hanshuyi( )函數(shù)和hanshuer( )函數(shù)在上面的程序中出現(xiàn)了 3次。
第一次出現(xiàn)是在函數(shù)聲明中,通知編譯器后面要用到的該函數(shù)。
第二次是在main()函數(shù)中以函數(shù)調(diào)用的形式出現(xiàn)的。
最后,程序給出了函數(shù)本身的源代碼。讓我們依次看一下它在程序中的每一次出現(xiàn)。
首先,我們寫的hanshuyi()函數(shù)的定義方式和 main()是相同的,都是用一個(gè)函數(shù)頭和括在花括號(hào)中的函數(shù)體。同時(shí),hanshuyi()函數(shù)的執(zhí)行時(shí)間由 main()函數(shù)調(diào)用它的位置決定,而不是由 hanshuyi()在文件中定義的位置決定的。
例如,在本程序中,你可以把 hanshuyi()函數(shù)定義在 main()函數(shù)的前面,程序的執(zhí)行不會(huì)改變,hanshuyi()函數(shù)仍是在兩次 printf()調(diào)用之間執(zhí)行的。記住,所有的 C語(yǔ)言程序都是從 main()函數(shù)開始執(zhí)行的,main函數(shù)也稱之為入口函數(shù),不管它在程序文件中處于什么位置。
最后我們來看下函數(shù)的走向,
當(dāng)聲明函數(shù)之后,我們就進(jìn)入了主函數(shù),執(zhí)行第一句printf()函數(shù);
然后通過簡(jiǎn)單地給出 hanshuyi()函數(shù)的名字在 main()函數(shù)中調(diào)用該函數(shù);
當(dāng) hanshuyi()執(zhí)行完畢后,程序會(huì)繼續(xù)執(zhí)行 main()函數(shù)的下一個(gè)語(yǔ)句,也就是第二個(gè)printf()函數(shù);
然后再執(zhí)行hanshuer() ;
然后執(zhí)行g(shù)etchar()函數(shù),防止閃屏;
最后return結(jié)束顯示窗口。
責(zé)任編輯:pj
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7615瀏覽量
137868 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63024 -
C程序
+關(guān)注
關(guān)注
4文章
255瀏覽量
36160
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ads1232獲取的數(shù)據(jù)中經(jīng)常有一些比較大的值或者一些錯(cuò)誤值,這個(gè)是因?yàn)槭裁丛颍?/a>
一些常見的動(dòng)態(tài)電路
![<b class='flag-5'>一些</b>常見的動(dòng)態(tài)電路](https://file1.elecfans.com/web1/M00/F4/F1/wKgaoWc0ATSAA4smAAARqkK1SoQ655.gif)
分享一些常見的電路
![分享<b class='flag-5'>一些</b>常見的電路](https://file1.elecfans.com/web1/M00/F4/F1/wKgaoWc0ATSAA4smAAARqkK1SoQ655.gif)
了解TI基于PCB布線規(guī)則的DDR時(shí)序規(guī)范
![<b class='flag-5'>了解</b>TI基于PCB布線<b class='flag-5'>規(guī)則</b>的DDR時(shí)序規(guī)范](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
LED驅(qū)動(dòng)器應(yīng)用的一些指南和技巧
![LED驅(qū)動(dòng)器應(yīng)用的<b class='flag-5'>一些</b>指南和技巧](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
求CSU8RP1186一些關(guān)于電子秤開發(fā)例程,最好是C的,跪謝
技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:掌握程序結(jié)構(gòu)知識(shí)
![技術(shù)干貨驛站 ▏深入理解<b class='flag-5'>C</b>語(yǔ)言:掌握<b class='flag-5'>程序</b>結(jié)構(gòu)知識(shí)](https://file1.elecfans.com/web2/M00/FC/CD/wKgZomaWI5uASgBaAABuQHdMO4I302.png)
三星電容命名規(guī)則,了解三星電容參數(shù) 知識(shí)篇
咨詢一些關(guān)于LED燈具的問題
編寫一個(gè)任務(wù)調(diào)度程序,在上下文切換后遇到了一些問題求解
stm32使用workbench只生成了一些.h和.c文件,然后該如何使用它們?
細(xì)談SolidWorks教育版的一些基礎(chǔ)知識(shí)
關(guān)于智能門禁設(shè)備做CCC認(rèn)證申請(qǐng)的一些經(jīng)驗(yàn)分享
![關(guān)于智能門禁設(shè)備做CCC認(rèn)證申請(qǐng)的<b class='flag-5'>一些</b>經(jīng)驗(yàn)分享](https://file1.elecfans.com/web2/M00/C4/07/wKgaomXphJGAOQMJAAAYDKOfOh4468.png)
找一些有關(guān)通信電路的資料?
晶振電路中電容電阻的一些基本原理和作用解析
![晶振電路中電容電阻的<b class='flag-5'>一些</b>基本原理和作用解析](https://file1.elecfans.com/web2/M00/C0/52/wKgZomXUYbaAE64-AAATtaVdY5s490.png)
評(píng)論