C 語言程式架構與基本語法

讓我們深入了解 C 程式架構的每一部分代表什麼意義,並學習 C 語言的基本語法規則。

剖析 Hello World

讓我們再次檢視這個經典的程式碼:

// 包含標準輸入輸出函式庫
#include <stdio.h>

// 程式的進入點:main 函式
int main() {
    // 在螢幕上印出文字
    printf("Hello, World!\n");

    // 回傳 0 表示程式正常結束
    return 0;
}

1. 前置處理指令 (#include)

#include <stdio.h>
  • # 開頭的指令是供給 預處理器 (Preprocessor) 看的。
  • #include 告訴編譯器要將某個檔案的內容「包含」進來。
  • <stdio.h>Standard Input Output Header 的縮寫,裡面定義了包含 printf 在內的輸入輸出功能。如果不包含這個檔案,編譯器就不知道 printf 是什麼。

2. 主函式 (main)

int main() {
    // ...
}
  • main 函式是 C 程式執行的起點 (Entry Point)。無論程式有多大,執行時總是從 main 開始。
  • int 代表這個函式執行完畢後會回傳一個整數 (Integer) 給作業系統。
  • { ... } 大括號包起來的部分稱為程式區塊 (Block),裡面包含了函式要執行的程式碼。

3. 輸出函式 (printf)

printf("Hello, World!\n");
  • printf 是一個用來在螢幕上顯示文字的函式。
  • 字串必須用與雙引號 "" 包起來。
  • \n 是一個特殊的跳脫字元 (Escape Character),代表換行
  • 分號 ;:在 C 語言中,每一行敘述 (Statement) 的結尾都必須加上分號,就像句點一樣。忘記加分號是初學者最常見的錯誤。

4. 回傳值 (return)

return 0;
  • return 指令用來結束函式並回傳一個值。
  • return 0; 慣例上代表程式成功執行且無錯誤。如果回傳非 0 的值,通常代表程式執行過程中發生了錯誤。

註解 (Comments)

註解是寫給人看的筆記,編譯器會完全忽略它們。良好的註解能提高程式碼的可讀性。

C 語言支援兩種註解方式:

單行註解

使用 // 開頭,後面的文字直到該行結束都是註解。

// 這是一行註解
int age = 18; // 也可以放在程式碼後面

多行註解

使用 /* 開頭,並以 */ 結尾,中間的所有內容都是註解,可以跨越多行。

/*
  這是一個多行註解
  這裡可以寫很多詳細的說明
  編譯器看不到這些字
*/

程式碼縮排 (Indentation)

雖然 C 語言並不強制要求縮排(不像 Python),但為了可讀性,我們強烈建議使用縮排來呈現程式結構。

通常我們會對大括號 {} 內的程式碼進行縮排(通常是 4 個空白或 1 個 Tab)。

int main() {
    // 有縮排,層次分明,容易閱讀
    if (1 > 0) {
        printf("True\n");
    }
    return 0;
}

識別字 (Identifiers) 命名規則

在 C 語言中替變數或依數取名時(例如 main, printf, 或之後自定義的變數),必須遵守以下規則:

  1. 只能包含英文字母 (A-Z, a-z)數字 (0-9)底線 (_)
  2. 不能以數字開頭。例如 2name 是錯誤的,name2 是正確的。
  3. 區分大小寫Totaltotal 是兩個不同的名字。
  4. 不能使用 關鍵字 (Keywords)。例如 int, return, if, while 都有特殊用途,不能拿來當名字。