C 簡介

C 簡介

C 語言是一種通用的高階語言,最初是由丹尼斯·裡奇在貝爾實驗室為開發 UNIX 作業系統而設計的。C 語言最開始是於 1972 年在 DEC PDP-11 計算機上被首次實現。

在 1978 年,布萊恩·柯林漢(Brian Kernighan)和丹尼斯·裡奇(Dennis Ritchie)製作了 C 的第一個公開可用的描述,現在被稱為 K&R 標準。

UNIX 作業系統,C編譯器,和幾乎所有的 UNIX 應用程式都是用 C 語言編寫的。由於各種原因,C 語言現在已經成為一種廣泛使用的專業語言。

  • 易於學習。
  • 結構化語言。
  • 它產生高效率的程式。
  • 它可以處理底層的活動。
  • 它可以在多種計算機平臺上編譯。

關於 C

  • C 語言是為了編寫 UNIX 作業系統而被髮明的。
  • C 語言是以 B 語言為基礎的,B 語言大概是在 1970 年被引進的。
  • C 語言標準是於 1988 年由美國國家標準協會(ANSI,全稱 American National Standard Institute)制定的。
  • 截至 1973 年,UNIX 作業系統完全使用 C 語言編寫。
  • 目前,C 語言是最廣泛使用的系統程式設計語言。
  • 大多數先進的軟體都是使用 C 語言實現的。
  • 當今最流行的 Linux 作業系統和 RDBMS(Relational Database Management System:關係資料庫管理系統) MySQL 都是使用 C 語言編寫的。

為什麼要使用 C?

C 語言最初是用於系統開發工作,特別是組成作業系統的程式。由於 C 語言所產生的程式碼執行速度與組合語言編寫的程式碼執行速度幾乎一樣,所以採用 C 語言作為系統開發語言。下面列舉幾個使用 C 的例項:

  • 作業系統
  • 語言編譯器
  • 彙編器
  • 文字編輯器
  • 印表機
  • 網路驅動器
  • 現代程式
  • 資料庫
  • 語言直譯器
  • 實體工具

C 程式

一個 C 語言程式,可以是 3 行,也可以是數百萬行,它可以寫在一個或多個副檔名為 ".c" 的文字檔案中,例如,hello.c。您可以使用 "vi""vim" 或任何其他文字編輯器來編寫您的 C 語言程式。

本教程假定您已經知道如何編輯一個文字檔案,以及如何在程式檔案中編寫原始碼。


C11

C11(也被稱為C1X)指ISO標準ISO/IEC 9899:2011,是當前最新的C語言標準。在它之前的C語言標準為C99。

新特性

  • 對齊處理(Alignment)的標準化(包括_Alignas標誌符,alignof運算子,aligned_alloc函式以及<stdalign.h>標頭檔案)。

  • _Noreturn 函式標記,類似於 gcc 的 __attribute__((noreturn))。

  • _Generic 關鍵字。

  • 多執行緒(Multithreading)支援,包括:
    _Thread_local儲存型別識別符號,<threads.h>標頭檔案,裡面包含了執行緒的建立和管理函式。
    _Atomic型別修飾符和<stdatomic.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()失敗時可以做最少的清理工作。