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, 或之後自定義的變數),必須遵守以下規則:
- 只能包含英文字母 (A-Z, a-z)、數字 (0-9) 和 底線 (_)。
- 不能以數字開頭。例如
2name是錯誤的,name2是正確的。 - 區分大小寫。
Total和total是兩個不同的名字。 - 不能使用 關鍵字 (Keywords)。例如
int,return,if,while都有特殊用途,不能拿來當名字。