1. 常量的值不可以修改,任何尝试修改常量的操作都会导致编译错误。而变量可以通过赋值来改变。
2. 常量定义后就不可修改,所以常量在定义时就必须初始化。变量可以定义时暂时不进行初始化。常量初始化的时候必须直接赋值。
3. 常量的地址不允许赋给非常量指针。
4. 常量在编译的时候,可以以立即数形式编译进指令,比起使用内存的变量执行起来效率更加高。
5. 常量本身没有地址属性(除字符常量等),而变量有地址属性。所以常量只能用作右值,而变量左值右值都可以。
const char a = 't'; // correct
char p;
p = 'd';
const test = p; // error