第 1 講:基本內(nèi)容
歡迎跟我一起學(xué)習(xí) C 語言。我們會列出一些常見的語法特性,以及對應(yīng)使用場合,以及它們的基本考點。
你先不要著急,看起來下面的內(nèi)容都偏難,因為它是超綱的知識點,但在本文里,它們不會被講解得非常難,所以本應(yīng)該在后續(xù)才會提到的這些東西,在這里也只是做個了解,而且你只需要知道這些東西到底是個什么框架就可以了。
語句
C 語言里,以分號結(jié)尾的一整段文字叫做一句話。
main
函數(shù)
整個程序的代碼一般長這樣:
main
函數(shù)的主要部分。程序一定從 main
函數(shù)進(jìn)入,并從 return 0;
語句退出。即,整個程序的執(zhí)行流程一定是從第 4 行開始進(jìn)去,然后從第 9 行執(zhí)行完畢后退出。期間一句一句執(zhí)行,從上到下。
建議你把整個代碼內(nèi)容的框架寫成上面這樣的形式,其中的 May be not exist 的所在行你可以不寫。但第 4 行,建議你這么寫,有些書上寫的是 void main()
、void main(void)
、void main(int argc, char *argv[])
、int main()
,這四種都是不合規(guī)矩的寫法。原因?qū)⒃诤竺骊U述。
空行和語義分割
第 7 行叫空行(Null Line),這一行不寫東西,僅僅用于分割代碼的上下部分,用于分清楚執(zhí)行邏輯。比如這個程序里,第 7 行前面是用于輸出(稍后會解釋 printf
函數(shù)),第 7 行后面是用于退出程序。所以程序可以嘗試通過這樣的方式來分割一個大括號里很多語句之間的執(zhí)行邏輯。
分割語義有多種方式,你還可以通過下面的方式。
標(biāo)簽
我們可以通過犧牲一行代碼,寫成文字加冒號的方式,來表示一個標(biāo)簽(Label)。這樣的標(biāo)簽文字可以達(dá)到分割語義的效果,但注意的是,標(biāo)簽的文字只能以數(shù)字、字母、下劃線 _
三種東西進(jìn)行組合,且第一個文字不能是數(shù)字。比如,Hello world
和 2_Hello
都是命名格式不正確的標(biāo)簽。
用大括號進(jìn)行語義分割
這樣可以達(dá)到分割效果。
借用 #pragma region
來作語義分割
這樣依舊可以進(jìn)行語義分割,而且 Visual Studio 還能根據(jù)你分割的方式,折疊和展開代碼。不過請注意的是,這種分割方式僅用于 Visual Studio,在其它的軟件里,無法使用這種方式。
注意,所有上面提到的語義分割所犧牲的代碼行都是無意義的,它們都不是真正的執(zhí)行代碼,你可以當(dāng)成注釋一般的存在。
注釋
前文我們使用過這個示例:
在第 2 和第 8 行里,以雙斜杠 //
形式書寫的內(nèi)容(包含當(dāng)前行里,符號后面的所有內(nèi)容)稱為注釋(Comment),可以寫一些任何你覺得想寫的東西,不需要是程序才認(rèn)識的東西。這些文字有助于你看懂代碼邏輯。所以這些東西叫注釋,就是這個原因。
還有一種注釋,可以跨行書寫:
/*
和 */
這種是不允許的。程序會被認(rèn)定,處于第 1 行的 /*
符號一直到第 7 行結(jié)束,而非第 8 行。
#include
指令
原代碼的第 1、2 行叫做預(yù)處理器指令(Preprocessor Command),以井號 #
開頭,包含 #pragma
、#include
等眾多指令,這里掌握 #include
指令。這個指令表示,將系統(tǒng)自帶的操作引入到程序之中,使得后面我們寫代碼的時候可以使用寫好的代碼,不用自己去寫。這些提供好的代碼,都是以 *.h
的文件形式存放,它們叫頭文件(Header File),即放在代碼頭部的文件。其中的 stdio.h 叫做標(biāo)準(zhǔn)輸入輸出流頭文件(Standard Input & Output),簡稱 std i o。
第 2 行是提供 system
命令(處于代碼第 8 行),用于暫停程序。這些程序統(tǒng)稱為命令行程序(Command-Line Application),或控制臺程序(Console Application),這些程序沒有所謂的退出按鈕和最小、最大化按鈕,它們僅僅被黑色風(fēng)格的框約束著。黑色風(fēng)格的框叫做控制臺(Console),是只用于輸入命令來控制操作系統(tǒng)或程序執(zhí)行邏輯的代碼化窗口。這意味著,這里面只會輸入一些奇怪的代碼文字,而沒有 QQ 這樣美麗的界面。
printf
語句
printf
語句是用于把文字顯示到控制臺上的語句,它可以原封不動把我們書寫在 printf
括號里的文字全部顯示出來。例如原示例里,最終執(zhí)行程序會得到的結(jié)果是
\n
沒有輸出,是因為 \n
在雙引號里被表示為換行,并非是原本的 \
和 n` 兩個符號。所有這樣奇特的符號都以 `\
作為開頭,系統(tǒng)提供了對應(yīng)的轉(zhuǎn)換表,在這里我們不多作出說明。另外,寫在雙引號里的 %%
將表示輸出顯示一個 %