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

C語言細節28:const初始化、數組大小、const vs宏、volatile修飾

     編輯:關於C語言

C語言細節28:const初始化、數組大小、const vs宏、volatile修飾

1. const 變量定義時必須初始化

const int n = 10;
int arr[n];  // C++: 合法(n是常量表達式)
             // C:   錯誤(n是變量,非常量表達式,C99 VLA除外)

C語言中const int本質是只讀變量,非編譯期常數。C++賦予其常量語義。C99變長數組(VLA)允許運行期大小,但非標準C++。

3. const vs #define:內存分配差異

int test = 10;
int t1 = test, t2 = test;  // 優化:只讀一次內存

volatile int v;
int v1 = v, v2 = v;  // 無優化:每次都從內存讀取

const volatile int reg;  // 只讀易變:如硬件狀態寄存器

適用場景:硬件寄存器、中斷共享變量、多線程標誌位(配合原子操作)。

總結

  1. const必須初始化,C中不能作數組大小(除VLA)
  2. const有類型作用域,可能分配內存;#define純文本替換
  3. volatile防編譯器優化,強制內存訪問,不保證原子性
  4. const volatile組合用於只讀硬件寄存器
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved