第一章 C語(yǔ)言概述
1.C語(yǔ)言歷史背景
C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,兼具一般高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的優(yōu)點(diǎn),可用來(lái)編寫系統(tǒng)軟件或應(yīng)用軟件。
1972-1973年,貝爾實(shí)驗(yàn)室在B語(yǔ)言基礎(chǔ)上設(shè)計(jì)出C語(yǔ)言。
1975年,UNIX第6版發(fā)布,C語(yǔ)言突出特點(diǎn)引起廣泛關(guān)注。
1977年,不依賴于具體機(jī)器的可移植的C語(yǔ)言編譯文本。
1978年后,C語(yǔ)言先后移植到大、中、小、微型計(jì)算機(jī)上,獨(dú)立于 UNIX 和 PDP。
C語(yǔ)言與UNIX在發(fā)展過(guò)程中是相輔相成的。
以1978年發(fā)布的 UNIX第7版 中的C語(yǔ)言編譯程序?yàn)榛A(chǔ),Brian W.Kernighan 和 Dennis M. Ritchie (K&R)合著了《The C Programming Language》。
1989年,ANSI公司發(fā)布第一個(gè)完整的 C語(yǔ)言標(biāo)準(zhǔn),C89。(American National Standard Institute 美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì))
1990年,國(guó)際標(biāo)準(zhǔn)化組織 ISO(International Standard Organization)接受 C89 為ISO C標(biāo)準(zhǔn),C90。 C90與C89基本相同。
1999年, ISO 重新修訂了C語(yǔ)言標(biāo)準(zhǔn),簡(jiǎn)稱 C99。
2.C語(yǔ)言特點(diǎn)
語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。
運(yùn)算符豐富。C語(yǔ)言運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理,從而使C語(yǔ)言的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大
數(shù)據(jù)類型豐富。C語(yǔ)言提供的數(shù)據(jù)類型有:整型、浮點(diǎn)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算(如鏈表、樹、棧等)。尤其是指針類型數(shù)據(jù),使用十分靈活和多樣化。
具有結(jié)構(gòu)化的控制語(yǔ)句(if...else語(yǔ)句、while語(yǔ)句、do...while語(yǔ)句、switch語(yǔ)句、for語(yǔ)句)。用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。C語(yǔ)言是完全模塊化和結(jié)構(gòu)化的語(yǔ)言。
語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。程序員需仔細(xì)檢查程序,保證其正確。
允許直接訪問(wèn)物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。
生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。C語(yǔ)言一般只比匯編程序生成的目標(biāo)代碼效率低10%~20%
程序可移植性好(與匯編語(yǔ)言相比)。
3.簡(jiǎn)單的C語(yǔ)言程序介紹
C語(yǔ)言是有函數(shù)構(gòu)成的。一個(gè)C元源程序至少且僅包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù)。函數(shù)是C程序的基本單位。被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫(kù)函數(shù)(如printf 和 scanf 函數(shù)),也可以是用戶根據(jù)需求自己編制設(shè)計(jì)的函數(shù)。 C中的 函數(shù) 相當(dāng)于其他語(yǔ)言中的 子程序。用函數(shù)來(lái)實(shí)現(xiàn)特定的功能,程序的全部工作都是由各個(gè)函數(shù)分別完成的。
一個(gè)函數(shù)由兩部分組成,函數(shù)的首部 和 函數(shù)體。
-
函數(shù)首部:函數(shù)的第一行,包括函數(shù)名、函數(shù)類型、函數(shù)參數(shù)(形式參數(shù))名、參數(shù)類型
例如: int max (int x, int y)
函數(shù)類型 函數(shù)名 函數(shù)參數(shù)類型 函數(shù)參數(shù)名
-
函數(shù)體:函數(shù)首部下面的花括號(hào)內(nèi)的部分。如果一個(gè)函數(shù)內(nèi)有多個(gè)花括號(hào),則最外面的為函數(shù)體范圍。
聲明部分:定義所用到的變量和對(duì)所調(diào)用函數(shù)的聲明
執(zhí)行部分:由若干個(gè)語(yǔ)句組成
一個(gè)C程序總是從main函數(shù)開始執(zhí)行的,main函數(shù)的位置任意。
C 程序 書寫格式自由。多數(shù)C編譯系統(tǒng)允許一行內(nèi)寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上,C程序沒有行號(hào)。C99標(biāo)準(zhǔn)不支持一行內(nèi)寫多個(gè)語(yǔ)句。
每個(gè)語(yǔ)句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。分號(hào)是C語(yǔ)句的必要組成部分,即使是程序中的最后一個(gè)語(yǔ)句也應(yīng)包含分號(hào)。
C語(yǔ)言本身沒有輸入輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)scanf和printf等函數(shù)完成。
可以用 /*......*/對(duì)C程序的某行或某幾行做注釋。一個(gè)好的,有價(jià)值的程序都應(yīng)該有注釋,以增加程序的可讀性。
4.C語(yǔ)言程序的運(yùn)行
-
運(yùn)行C程序的步驟
程序:一組計(jì)算機(jī)指令,每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。
編輯 → 編譯 → 鏈接 → 執(zhí)行
源程序 → 目標(biāo)程序 → 連接 → 可執(zhí)行的目標(biāo)程序
-
C 程序運(yùn)行流程圖
1.1C程序運(yùn)行流程圖.png -
VC6.0 常見文件格式
.c .exe .NCB .PCH
.cpp .DSP .PLG .PDB
.obj .DSW .ILK
#include <stdio.h>
void main ()
{
printf("This is a C program. \n ");
}
