已發布·持續改進
Programming language · 1972 年發布
C 是一門精簡、可攜的系統程式語言,編譯為高效的原生程式碼,可直接控制記憶體與硬體。
C 是一門通用的程序式程式語言,由貝爾實驗室的丹尼斯·里奇為撰寫 Unix 作業系統而設計。它後來經 ANSI 與 ISO 標準化,目前由 ISO/IEC JTC1/SC22/WG14 委員會維護標準,C99、C11、C17 等修訂版被廣泛使用。C 的關鍵字很少,由函式、結構與指標等簡單元素組成,編譯器會將原始碼直接轉譯為機器碼。
在需要可預期的效能、精簡的執行檔,以及直接控制記憶體的場合,C 的優勢最為明顯,例如作業系統核心、裝置驅動程式、微控制器韌體、其他語言的執行環境與資料庫。幾乎所有平台都有 C 編譯器,C 的呼叫慣例(ABI)也是各種語言互相呼叫函式庫時的共同介面。代價是 C 不檢查陣列邊界,也沒有自動記憶體管理,防止緩衝區溢位與釋放後使用等錯誤,必須由程式設計師自行負責。
入門時,先安裝 GCC、Clang 或 MSVC 其中之一,在終端機中親手編譯幾個小程式。常見的學習順序是:變數與型別、控制敘述、函式、陣列與字串、指標、結構,最後是動態記憶體。編譯時以 -Wall -Wextra 開啟警告,到 cppreference 查閱標準函式庫,並養成以 AddressSanitizer 和 GDB 追查記憶體錯誤的習慣。
透過指標直接存取記憶體位址,並以 malloc 與 free 自行管理記憶體,可以精細控制資料配置與資源使用。
語言本身很小,並由 ISO 標準定義,符合標準的程式碼可以在各種作業系統與處理器上重新編譯使用。
C 編譯為原生機器碼,幾乎不需要執行環境支援,甚至能用於沒有作業系統的韌體與開機載入程式。
C 的函式介面是事實上的標準 ABI,Python、Rust、Go 等語言都能透過 FFI 直接呼叫 C 函式庫。
在 Debian、Ubuntu 等 Linux 發行版上,以下方指令安裝 GCC 與 Make(Fedora 請用 sudo dnf install gcc make)。在 macOS 上,執行 xcode-select --install 安裝 Xcode 命令列工具即可使用 Clang。在 Windows 上,可安裝 MSYS2 後在 UCRT64 終端機執行 pacman -S mingw-w64-ucrt-x86_64-gcc,或安裝 Visual Studio Build Tools 並選擇「使用 C++ 的桌面開發」工作負載。
sudo apt install build-essential開啟新的終端機,確認可以顯示編譯器版本。macOS 上的 gcc 指令實際指向 Apple Clang,因此會顯示 Clang 的版本。若安裝的是 MSVC,請在 Developer Command Prompt 中執行 cl 確認。
gcc --version將第一個程式存成 hello.c,開啟警告並以 C17 標準編譯後執行。使用 MSVC 時,以 cl /W4 hello.c 編譯,再執行 hello.exe。
gcc -Wall -Wextra -std=c17 hello.c -o hello && ./hello#include <stdio.h> 引入宣告了 printf 的標準輸入輸出標頭檔。main 函式是程式的進入點,(void) 表示它不接受參數。printf 輸出字串,\n 代表換行。return 0 告訴作業系統程式正常結束。gcc 將原始碼編譯成名為 hello 的執行檔,再以 ./hello 執行。
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./hello共六章,帶你從安裝一步步認識 C 的核心概念。
在這裡提問、分享經驗,交流關於 C 的看法。
還沒有討論。來發起第一則吧。
0 則留言
登入 · 登入後即可留言。
來留下第一則留言吧。