const int n = 10;
int arr[n]; // C++: 合法(n是常量表達式)
// C: 錯誤(n是變量,非常量表達式,C99 VLA除外)
C語言中const int本質是只讀變量,非編譯期常數。C++賦予其常量語義。C99變長數組(VLA)允許運行期大小,但非標準C++。
int test = 10; int t1 = test, t2 = test; // 優化:只讀一次內存 volatile int v; int v1 = v, v2 = v; // 無優化:每次都從內存讀取 const volatile int reg; // 只讀易變:如硬件狀態寄存器
適用場景:硬件寄存器、中斷共享變量、多線程標誌位(配合原子操作)。
const必須初始化,C中不能作數組大小(除VLA)const有類型作用域,可能分配內存;#define純文本替換volatile防編譯器優化,強制內存訪問,不保證原子性const volatile組合用於只讀硬件寄存器