跳转到内容

C編程語言

维基百科,自由的百科全书

这是本页的一个历史版本,由Samuel~zhwiki留言 | 贡献2003年5月13日 (二) 10:34编辑。这可能和当前版本存在着巨大的差异。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)


C語言是一種高級電腦語言,它主要用來進行電腦的程式設計。C語言具有高效、靈活、功能豐富、表達力強和移植性好等的特點,在電腦語言中備受青睞。

C語言是由UNIX的研製者Ken Thompson於1970年研製出的B語言的基礎上發展和完善起來的。C語言可以廣泛應用於不同的作業系統,例如UNIX,MS-DOSWindowsLinux等。C語言是一種面向過程的語言,同時具有高階語言組合語言的優點。在C語言的基礎上發展起來的有面向物件的語言C++,網路上廣泛使用的JavaJavaScriptC#等。

1983年,美國國家標準局語言標準化委員會對C語言進行了標準化,於1983年頒佈了第一個C語言標準草案(83 ANSI C),後來於 1987年又頒佈了另一個C語言標準草案(87 ANSI C)。

C語言的特色

C語言是高級程式語言,也就是說程式師不必知道具體的CPU型號也可以爲電腦進行程式編制。在程式能夠運行前,源代碼必須有編譯器編譯成機器語言。相對於組合語言只能針對具體型號的CPU才能運行,C語言的便捷性是很明顯的。

C語言的主要特性

  • C語言保留了低階語言的特性,例如涉及記憶體的指標。
  • C語言通過參數在函數裏傳遞數值。
  • 使用了預處理機制,使得程式裏可以通過包含例如巨集處理的方式來處理根源程式。
  • C語言提供了一套標準庫,這些庫裏提供了十分有用的功能。

但是並不是所有的這些特性都是有效的。例如,預處理通常作爲一個獨立的程式被處理,這使得與處理的程式並不一定被完全編譯。

雖然C是高階語言,但是它同時擁有一些組合語言的特性,對其他的語言來說這是接近低階語言的特點。例如,在C語言裏,程式師可以對電腦記憶體進行管理。在默認的情況下,C語言不會對陣列的範圍進行檢查,也就是說即使陣列越界,C語言也不會作出錯誤提示。對電腦記憶體的管理使得程式師可以變出更快捷、更有效的程式,這對於設備驅動程式來說尤爲重要。但是這也使得程式容易産生令人討厭的“臭蟲”,例如緩衝器溢出錯誤。然而,這些錯誤可以由一些工具來避免。

C語言的不足可以由由C語言發展而來的更新的編程語言改進。Cyclone語言的擁有提防對於記憶體錯誤的特性。C++和Objective C提供了用於面向物件的編程結構。Java和C#增加了面向物件的結構使得對記憶體的管理自動化。

C語言的歷史

C語言的第一次發展在1969年到1973年之間。C之所以被稱爲C是因爲C語言的很多特性是由一種更早的被稱爲B語言的編程語言中發展而來的。

到了1973年,C語言已經可以用來編寫Unix作業系統的內核。這是第一次用高階語言來編寫作業系統的內核。Ritchie和Brian Kernighan在1978年出版了C編程語言(也就是白皮書或K&R),這本書在很多年裏都被認爲是這種語言的規範。甚至在今天,這本著作仍然是一本不錯的指南。

1980年以後,貝爾實驗室使得C變得更爲廣泛的流行,使得C一度成爲了作業系統和應用程式編程的首選。甚至到今天,它仍被廣泛用於編寫作業系統以及作爲最廣泛的電腦編程教育的首選語言。

二十世紀八十年代晚期,Bjarne Stroustrup和貝爾實驗室爲C語言添加了面向物件的特性。他們把這種語言成爲了C++。C++現在廣泛應用的在Microsoft Windows下運行的商業應用程式的編制,然而C仍然是Unix世界的熱門編程語言。

用C語言寫一個Hello World程式

下面是一個在標準外設上輸出Hello world得簡單程式,這種程式通常作爲開始學習編程語言時的第一個程式:

 #include <stdio.h>

 int main(void)
 {
     printf("Hello, World!\n");
     return 0;
 }
 

C語言的標準庫

以下列出由C語言提供的標準函數庫,函數庫通過#include進行引用。

在C89標準中:

  • <assert.h>
  • <ctype.h>
  • <errno.h>
  • <float.h>
  • <limits.h>
  • <locale.h>
  • <math.h>
  • <setjmp.h>
  • <signal.h>
  • <stdarg.h>
  • <stddef.h>
  • <stdio.h>
  • <stdlib.h>
  • <string.h>
  • <time.h>

在95年的修正版中

  • <iso646.h>
  • <wchar.h>
  • <wctype.h>

在C99中增加了六個函數庫

  • <complex.h>
  • <fenv.h>
  • <inttypes.h>
  • <stdbool.h>
  • <stdint.h>
  • <tgmath.h>

c語言的關鍵字

char short int unsigned
long float double struct
union void enum signed
const volatile typedef auto
register static extern break
case continue default do
else for goto if
return switch while sizeof

參見: