首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言常量與變量基礎:符號常量、直接常量、變量定義與內存模型

     編輯:關於C語言

常量與變量是程式操作數據的兩大核心實體。本文釐清兩者概念、分類、定義方式與內存模型,並介紹符號常量(#define)的最佳實踐。

核心概念區分

特性常量變量
值是否可改執行期間不可改可隨時修改
使用前需定義直接常量無需,符號常量需必須先定義後使用
內存佔用直接常量不佔變量空間佔固定存儲單元

常量分類體系

1. 直接常量(字面常量)

  • 整型:12、0、-3
  • 實型:4.6、-1.23
  • 字符:'a'、'b'

2. 符號常量

用標識符代表常量值,必須先定義:

#define IDENTIFIER value

範例 3-1:價格計算

#define PRICE 30

main() {
    int num = 10, total;
    total = num * PRICE;
    printf("total=%d", total);  // 300
}

三大優勢

  1. 語義清晰: PRICE 比 30 更易讀。
  2. 一改全改: 修改定義處,所有引用自動更新。
  3. 無運行開銷: 預處理階段純文本替換,零性能損耗。

關鍵限制

  • 作用域內值不可改,不可賦值(PRICE = 40; 錯誤)。
  • 慣例:符號常量全大寫(MAX_SIZE),變量小寫(maxSize),一眼區分。

變量定義與內存模型

定義語法

type name1, name2, ...;
type name = initial_value;

範例

int num, total;
double price = 123.123;
char a = 'a', abc;

內存模型示意

變量內存模型

  • 變量名(L-value): 編譯期綁定的內存地址標籤。
  • 變量值(R-value): 運行期存儲在該地址的數據內容。
  • 兩者分離:a = 10 將 10 寫入 a 對應的內存單元。

工程實踐建議

場景推薦做法
固定業務參數#define MAX_USERS 1000 或 const int MAX_USERS = 1000; (C99+)
陣列維度#define BUF_SIZE 1024;char buf[BUF_SIZE];
魔術數字消除所有字面常量提煉為符號常量
變量定義位置C89:區塊開頭;C99+:就近定義(推薦)
初始化定義時即初始化,避免未定義值 Bug

總結

常量代表「不變的業務語義」,變量代表「可變的運行狀態」。善用 #define(或 const)消除魔術數字,規範變量定義與初始化,是寫出可讀、可維護代碼的第一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved