當前位置:編程學習大全網 - 編程語言 - - - C語言是什麽

- - C語言是什麽

C語言是壹種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出。1978後,C語言已先後被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫。具體應用比如單片機以及嵌入式系統開發。

 C語言的祖先是BCPL語言。 1967年,劍橋大學的 Martin Richards 對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。 1970年,美國貝爾實驗室的 Ken Thompson。以BCPL語言為基礎,設計出很簡單且很接近硬件的B語言(取BCPL的首字母)。並且他用B語言寫了第壹個UNIX操作系統。 在1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了壹種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。 為了使UNIX操作系統推廣,1977年Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。 1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的《The C Programming Language》壹書。通常簡稱為《K&R》,也有人稱之為《K&R》標準。但是,在《K&R》中並沒有定義壹個完整的標準C語言,後來由美國國家標準化協會(American National Standards Institute)在此基礎上制定了壹個C語言標準,於壹九八三年發表。通常稱之為ANSI C。 K&R第壹版在很多語言細節上也不夠精確,對於pcc這個“參照編譯器”來說,它日益顯得不切實際;K&R甚至沒有很好表達它所要描述的語言,把後續擴展扔到了壹邊。最後,C在早期項目中的使用受商業和政府合同支配,這意味著壹個認可的正式標準是必需的。因此(在M. D. McIlroy的催促下),ANSI於1983年夏天,在CBEMA的領導下建立了X3J11委員會,目的是產生壹個C標準。X3J11在1989年末提出了壹個他們的報告[ANSI 89],後來這個標準被ISO接受為ISO/IEC 9899-1990。 1990年,國際標準化組織ISO(International Organization for Standards)接受了89 ANSI C 為I SO C 的標準(ISO9899-1990)。1994年,ISO修訂了C語言的標準。 1995年,ISO對C90做了壹些修訂,即“1995基準增補1(ISO/IEC/9899/AMD1:1995)”。1999年,ISO又對C語言標準進行修訂,在基本保留原來C語言特征的基礎上,針對應該的需要,增加了壹些功能,尤其是對C++中的壹些功能,命名為ISO/IEC9899:1999。 2001年和2004年先後進行了兩次技術修正。 目前流行的C語言編譯系統大多是以ANSI C為基礎進行開發的,但不同版本的C編譯系統所實現的語言功能和語法規則又略有差別。 2011年12月8日,ISO正式公布C語言新的國際標準草案:ISO/IEC 9899:2011,即C11。 新的標準修提高了對C++的兼容性,並將新的特性增加到C語言中。新功能包括支持多線程, 基於ISO/IEC TR 19769:2004規範下支持Unicode,提供更多用於查詢浮點數類型特性的宏定義和靜態聲明功能。這些新特性包括: ● 對齊處理(Alignment)的標準化(包括_Alignas標誌符,alignof運算符, aligned_alloc函數以及<stdalign.h>頭文件。 ● _Noreturn 函數標記,類似於 gcc 的 __attribute__((noreturn))。 ● _Generic 關鍵字。 ● 多線程(Multithreading)支持,包括:_Thread_local存儲類型標識符,<threads.h>頭文件,裏面包含了線程的創建和管理函數。 ● 增強的Unicode的支持。基於C Unicode技術報告ISO/IEC TR 19769:2004,增強了對Unicode的支持。包括為UTF-16/UTF-32編碼增加了char16_t和char32_t數據類型,提供了包含unicode字符串轉換函數的頭文件<uchar.h>. ● 刪除了 gets() 函數,使用壹個新的更安全的函數gets_s()替代。 ● 增加了邊界檢查函數接口,定義了新的安全的函數,例如 fopen_s(),strcat_s() 等等。 ● 增加了更多浮點處理宏。 ● 匿名結構體/聯合體支持。這個在gcc早已存在,C11將其引入標準。 ● 靜態斷言(Static assertions),_Static_assert(),在解釋 #if 和 #error 之後被處理。 ● 新的 fopen() 模式,(“…x”)。類似 POSIX 中的 O_CREAT|O_EXCL,在文件鎖中比較常用。 ● 新增 quick_exit() 函數作為第三種終止程序的方式。當 exit()失敗時可以做最少的清理工作。 ● _Atomic類型修飾符和<stdatomic.h>頭文件。

編輯本段特點

1. C是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言壹樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。 2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控制程序流向,從而使程序完全結構化。 3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的遊戲。 4. C語言適用範圍大。適合於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。 C語言對編寫需要硬件進行操作的場合,明顯優於其它高級語言,有壹些大型應用軟件也是用C語言編寫的。

編輯本段特色

指針是C語言的壹大特色,可以說是C語言優於其它高級語言的壹個重要原因。就是因為它有指針,可以直接進行靠近硬件的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了壹些用戶的支持,但是,由於這些改進增加語言的復雜度,也為另壹部分所詬病。Java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中壹些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C++/C。壹般而言,C,C++,java被視為同壹系的語言,它們長期占據著程序使用榜的前三名。

  • 上一篇:中級電工考試考什麽
  • 下一篇:什麽是虛擬機?
  • copyright 2024編程學習大全網