主要內容:const變量初始化、數組大小用const變量細節、const變量與#define宏、volatile修飾
一、const變量初始化時必須賦值
二、const變量在C++中可以做數組大小元素、在C中不行,因爲它是變量
三、const和#define區別:內存分配
四、volatile修飾一些變量:易被操縱系統、硬件、多線程修改的變量
#include <stdio.h>
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只讀,可以表示只讀寄存器
}
輸出:
此例子無輸出