常量與變量是 C 程序操作數據的兩大核心實體。本文系統講解常量分類(字面常量/符號常量)、#define 宏定義機制、變量定義語法、初始化規則、命名規範與作用域基礎,幫助初學者建立規範的數據管理觀念。
直接出現在代碼中的固定值:100、3.14、'A'、"hello"。類型由書寫形式決定(後綴可調整)。
用標識符代表常量值,通過預處理指令 #define 定義:
#define PRICE 30
#define PI 3.14159265358979323846
MAX_SIZE),與變量小寫區分。PRICE 勝過 30);**一處修改、全局生效**,利於維護。&PRICE。#include <stdio.h>
#define PRICE 30
int main() {
int num = 10;
int total = num * PRICE; // 預處理展開為 num * 30
printf("total=%d\n", total); // 300
return 0;
}
類型說明符 變量名1, 變量名2, ... ;
int a = 3;
int b, c = 5; // b 未初始化,值不確定
float x = 3.2, y = 3.0, z = 0.75;
char ch1 = 'K', ch2 = 'P';
int a = b = c = 5; **非法**(C 語法不支持)。#include <stdio.h>
int main(void) {
int a = 3, b, c = 5;
b = a + c; // 賦值語句,非初始化
printf("a=%d, b=%d, c=%d\n", a, b, c); // 3, 8, 5
return 0;
}
| 特性 | 符號常量 (#define) | 變量 |
|---|---|---|
| 值可變性 | 不可變(編譯期確定) | 可變(運行期修改) |
| 存儲 | 無內存單元,文本替換 | 佔用內存單元 |
| 類型檢查 | 無 | 編譯器強類型檢查 |
| 作用域 | 定義處至文件結尾 | 塊作用域/文件作用域 |
| 可取址 | 否 | 是 (&var) |
| 調試可見性 | 不可見(預處理展開) | 可見(符號表) |
const 變量替代 #define:const double PI = 3.14159; 具有類型、作用域、可調試、可取址,編譯器優化同樣優秀。enum { RED, GREEN, BLUE };)替代整數宏,類型安全且調試友好。max_count),常量全大寫(MAX_COUNT),宏全大寫(SQUARE(x))。