C[計算機語言]

C[計算機語言]
C[計算機語言]
更多義項 ▼ 收起列表 ▲

C語言是一門通用計算機程式語言,套用廣泛。設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言。C語言也很適合搭配彙編語言來使用(往往可以通過內聯彙編語言或與彙編語言目標檔案一起連線。對於任何一種作業系統環境,C函式的ABI(ApplicationBinaryInterface)與彙編語言的子過程(routine/procedure)的ABI一定是完全兼容的)。儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標準規格寫出的C語言程式可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

基本信息

早期發展

c語言 c語言
C語言之所以命名為C,是因為 C語言源自Ken Thompson發明的B語言,而 B語言則源自BCPL語言。
1967年,劍橋大學的Martin Richards對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。
20世紀60年代,美國AT&T公司貝爾實驗室(AT&T Bell Laboratory)的研究員Ken Thompson閒來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子遊戲——Space Travel。他背著老闆,找到了台空閒的機器——PDP-7。但這台機器沒有作業系統,而遊戲必須使用作業系統的一些功能,於是他著手為PDP-7開發作業系統。後來,這個作業系統被命名為——UNIX。
1970年,美國貝爾實驗室的 Ken Thompson,以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX作業系統。
1971年,同樣酷愛Space Travel的Dennis M.Ritchie為了能早點兒玩上遊戲,加入了Thompson的開發項目,合作開發UNIX。他的主要工作是改造B語言,使其更成熟。
1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
1973年初,C語言的主體完成。Thompson和Ritchie迫不及待地開始用它完全重寫了UNIX。此時,編程的樂趣使他們已經完全忘記了那個"Space Travel",一門心思地投入到了UNIX和C語言的開發中。隨著UNIX的發展,C語言自身也在不斷地完善。直到今天,各種版本的UNIX核心和周邊工具仍然使用C語言作為最主要的開發語言,其中還有不少繼承Thompson和Ritchie之手的代碼。
在開發中,他們還考慮把UNIX移植到其他類型的計算機上使用。C語言強大的移植性(Portability)在此顯現。機器語言和彙編語言都不具有移植性,為x86開發的程式,不可能在Alpha,SPARC和ARM等機器上運行。而C語言程式則可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C原始碼編譯、連線成目標二進制檔案之後即可運行。
1977年,Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程式》。
C語言繼續發展,在1982年,很多有識之士和美國國家標準協會為了使這個語言健康地發展下去,決定成立C標準委員會,建立C語言的標準。委員會由硬體廠商,編譯器及其他軟體工具生產商,軟體設計師,顧問,學術界人士,C語言作者和應用程式員組成。1989年,ANSI發布了第一個完整的C語言標準——ANSI X3.159—1989,簡稱“C89”,不過人們也習慣稱其為“ANSI C”。C89在1990年被國際標準組織ISO(International Organization for Standardization)一字不改地採納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被簡稱為“C90”。1999年,在做了一些必要的修正和完善後,ISO發布了新的C語言標準,命名為ISO/IEC 9899:1999,簡稱“C99”。 在2011年12月8日,ISO又正式發布了新的標準,稱為ISO/IEC9899: 2011,簡稱為“C11”。

標準化進程

K&R C

起初,C語言沒有官方標準。1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。布萊恩·柯林漢(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》。這本書被 C語言開發者們稱為K&R,很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為K&R C。
K&R C主要介紹了以下特色:
結構體(struct)類型
長整數(long int)類型
無符號整數(unsigned int)類型
把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。
即使在後來ANSI C標準被提出的許多年後,K&R C仍然是許多編譯器的最 準要求,許多老舊的編譯器仍然運行K&R C的標準。

ANSI C / C89標準

1970到80年代,C語言被廣泛套用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
1983年,美國國家標準協會(ANSI)成立了一個委員會X3J11,來制定 C語言標準。
1989年,美國國家標準協會(ANSI)通過了C語言標準,被稱為ANSI X3.159-1989 "Programming Language C"。因為這個標準是1989年通過的,所以一般簡稱C89標準。有些人也簡稱ANSI C,因為這個標準是美國國家標準協會(ANSI)發布的。
1990年,國際標準化組織(ISO)和國際電工委員會(IEC)把C89標準定為C語言的國際標準,命名為ISO/IEC 9899:1990 - Programming languages -- C 。因為此標準是在1990年發布的,所以有些人把簡稱作C90標準。不過大多數人依然稱之為C89標準,因為此標準與ANSI C89標準完全等同。
1994年,國際標準化組織(ISO)和國際電工委員會(IEC)發布了C89標準修訂版,名叫ISO/IEC 9899:1990/Cor 1:1994,有些人簡稱為C94標準。
1995年,國際標準化組織(ISO)和國際電工委員會(IEC)再次發布了C89標準修訂版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity ,有些人簡稱為C95標準。

C99標準

c語言 c語言
1999年1月,國際標準化組織(ISO)和國際電工委員會(IEC)發布了C語言的新標準,名叫ISO/IEC 9899:1999 - Programming languages -- C ,簡稱C99標準。這是C語言的第二個官方標準。
在C99中包括的特性有:
增加了對編譯器的限制,比如源程式每行要求至少支持到 4095 位元組,變數名函式名的要求支持到 63 位元組(extern 要求支持到)。
增強了預處理功能。例如:
宏支持取可變參數 #define Macro(...) __VA_ARGS__
使用宏的時候,允許省略參數,被省略的參數會被擴展成空串。
支持 // 開頭的單行注釋(這個特性實際上在C89的很多編譯器上已經被支持了)
增加了新關鍵字 restrict, inline, _Complex, _Imaginary, _Bool
支持 long long, long double _Complex, float _Complex 等類型
支持不定長的數組,即數組長度可以在運行時決定,比如利用變數作為數組長度。聲明時使用 int a[var] 的形式。不過考慮到效率和實現,不定長數組不能用在全局,或 struct 與 union 里。
變數聲明不必放在語句塊的開頭,for 語句提倡寫成 for(int i=0;i2->1...循環,2為循環條件。
while
while循環結構,while(1) 2; 的執行順序是1->2->1...循環,1為循環條件
以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。

編譯

#define 預編譯宏
#if 表達式 #else if 表達式 #else #endif 條件編譯
#ifdef 宏 #else #endif 條件編譯
#ifndef 宏 #else #endif 條件編譯與條件編譯

程式結構

C語言的模組化程式結構用函式來實現,即將複雜的C程式分為若干模組,每個模組都編寫成一個C函式,然後通過主函式調用函式及函式調用函式來實現一大型問題的C程式編寫,因此常說:C程式=主函式+子函式。因此,對函式的定義、調用、值的返回等中要尤其注重理解和套用,並通過上機調試加以鞏固。
判斷語句(選擇結構):
if 語句:“如果”語句;if—else 語句:“若…(則)…否則…”語句;switch 語句:“切換”語句;switch—case:“切換—情況”語句。
循環語句(循環結構):
while 語句:“當…”語句;do—while 語句:“做…當…(時候)”語句;for 語句:條件語句(即“(做)…為了…”語句)。
跳轉語句(循環結構:是否循環):
goto 語句:“轉舵”語句,也稱“跳轉”語句;break 語句:“中斷”(循環)語句,即結束整個循環;continue 語句:“繼續”語句(結束本次循環,繼續下一次循環);return 語句:“返回饋”語句。

結構

函式簡介
C程式是由一組變數或是函式的外部對象組成的。 函式是一個自我包含的完成一定相關功能的執行代碼段。我們可以把函式看成一個“黑盒子”,你只要將數據送進去就能得到結果,而函式內部究竟是如何工作的的,外部程式是不知道的。外部程式所知道的僅限於輸入給函式什麼以及函式輸出什麼。函式提供了編製程序的手段,使之容易讀、寫、理解、排除錯誤、修改和維護。
C程式中函式的數目實際上是不限的,如果說有什麼限制的話,那就是,一個C程式中必須至少有一個函式,而且其中必須有一個並且僅有一個以main為名,這個函式稱為主函式,整個程式從這個主函式開始執行。
C 語言程式鼓勵和提倡人們把一個大問題劃分成一個個子問題,對應於解決一個子問題編制一個函式,因此,C 語言程式一般是由大量的小函式而不是由少量大函式構成的,即所謂“小函式構成大程式”。這樣的好處是讓各部分相互充分獨立,並且任務單一。因而這些充分獨立的小模組也可以作為一種固定規格的小“構件”, 用來構成新的大程式。
C語言的一個主要特點是可以建立庫函式。Turbo C 2.0 提供的運行程式庫有400多個函式, 每個函式都完成一定的功能, 可由用戶隨意調用。這些函式總的分為輸入輸出函式、數學函式、字元串和記憶體函式、與BIOS和DOS有關的函式、 字元螢幕和圖形功能函式、過程控制函式、目錄函式等。對這些庫函式應熟悉其功能, 只有這樣才可省去很多不必要的工作。
本處專門介紹Turbo C2.0的庫函式,並對每個函式都給出例程,(點擊頁底的連結就可以瀏覽相應的函式),讀者可以將自已需要的部分以塊的方式定義, 然後將此塊寫入檔案,這樣就可以在進入Turbo C2.0集成開發環境後,直接調用此程式,連線,運行,觀察結果,以加深對該函式的理解。
用戶編制Turbo C語言源程式,就是利用Turbo CC語言函式簡介。
運算符號
()、 []、 -> 、 .、!、 ++、 --圓括弧、方括弧、指針、成員、邏輯非、自加、自減
++ 、 -- 、 * 、 & 、 ~ 、!單目運算符
+、 - 、 sizeof、(cast)
* 、 / 、%算術運算符
+ 、 -算術運算符
>位運算符
< 、 、 >=關係運算符
== 、!=關係運算符號
&位與
^位異或
|位或
&&邏輯與
||邏輯或
? 、:條件運算符
/= 、%= 、 &= 、 |= 、 ^=賦值運算符
= 、 += 、 -= 、 *= 、
,順序運算符
程式結構
1、一個C語言源程式可以由一個或多個源檔案組成。
2、每個源檔案可由一個或多個函式組成。
3、一個源程式不論由多少個檔案組成,都有一個且只能有一個main函式,即主函式。是整個程式的入口。
4、源程式中可以有預處理命令(包括include 命令,ifdef、ifndef命令、define命令),預處理命令通常應放在源檔案或源程式的最前面。
5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函式頭和花括弧“}”之後不能加分號。(結構體、聯合體、枚舉型的聲明的“}”後要加“ ;”。)
6、標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
書寫規則
1、一個說明或一個語句占一行。
2、用{} 括起來的部分,通常表示了程式的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨占一行。
3、低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程式的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。

教材與考試

考試

全國計算機等級考試(National Computer Rank Examination,簡稱NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查應試人員計算機套用知識與技能的全國性計算機水平考試體系。其中二級考試中包含了C語言的科目。
1、全國計算機等級考試二級考試科目;
2、C語言廣泛套用於數控、機械、電子、通信、自動控制等領域;
3、C語言簡潔緊湊、靈活方便、運算符豐富、數據結構豐富;
4、C語言允許直接訪問物理地址,可以直接對硬體進行操作;
5、C語言適用範圍大,可移植性好,有一個突出的優點就是適合於多種作業系統。

入門教材

《輕鬆學C語言》
《C Primer Plus (Fifth Edition)》
《C Primer Plus (第五版)中文版》

進階教材

《The C Programming Language (Second Edition)》
《C程式設計語言(第二版)》譚浩強版

高階教材

《Expert C Programming》
《C Traps and Pitfalls》
《Pointers on C》
《C: A Reference Manual》

相關詞條

相關搜尋

熱門詞條

聯絡我們