一、const變量初始化時必須賦值
二、const變量在C++中可以做數組大小元素、在C中不行,因為它是變量
三、const和#define區別:內存分配
四、volatile修飾一些變量:易被操縱系統、硬件、多線程修改的變量
#include輸出:int main() { /* 測試1 */ const int b; // 不初始化會報錯 // b = 2; /* 測試2 *C語言中以下定義數組大小會報錯,可看出c語言中const修飾的num是變量,不是常量 * 而C++中則編譯通過可以用 */ const int num = 2; // int a[num] ={3,4}; /* 測試3 */ #define M 4 // 宏常量 const int N = 5; //此時並未將N放入內存中,保存在符號表中 int i = N; // 此時為N分配內存,以後不再分配 int I = M; // 預編譯起見進行宏替換,分配內存 (M沒有類型,怎麼分配內存) int j = N; // 沒有內存分配 int J = M; // 再次宏替換,有一次分配內存 /* 測試4 在做下面測試時,vc++6.0一般Debug模式沒有優化,但可以同時生成Debug和Release版做測試 */ int test = 10; int test_1 = test; int test_2 = test; // 在這裡賦值時,編譯器不會生成匯編重新從內存讀取test值(在兩次賦值間test沒有作為左值,否則不優化) volatile int t; int t_1 = t; int t_2 = t; // 在這裡賦值時,t重新從內存讀取 const volatile int temp; // temp只讀,可以表示只讀寄存器 }
此例子無輸出