const:修饰的变量是只读的;
修饰的变量会在内存占用空间;
本质上const只是对编译器有用,在程序运行时无用;
修饰的值可以通过指针来改变,故const不是真正意义上的常量;
修饰的数组空间不可被改变。
volatile:可理解为“编译器告警指示字”;
告诉编译器每次去内存中取变量的值;
主要修饰可被多个线程访问的变量;
也可修饰可能被未知因素更改的变量。
综上const volatile int i=0;是合法的,const定义了一个只读变量,即i不能为左值,但是当取用i时会到内存中读取,因为既然是const的,i认为是不变的。