C++_const
----- const 常量修饰符 ------
a.修饰只读变量或对象
b.节省空间,避免不必要的内存分配 。编译器,不为const分配存储空间,保存在符号表中,成为编译期间变量,不用存储和读取内存,操作效率高
为什么定义时同时要初始化?
const VS define
#define 宏是在预编译期间进行替换,const在编译时确定值
#define 宏没有类型,const修饰的只读变量具有特定的类型
例子:
#define D 3 const int C = 5; // 此时并未将C放入内存中 ... int i = C; // 为N分类内存,此后不再分配 int I = D; // 预编译期间 进行宏替换,分配内存 int j = C; // 没有内存分配 int J = D; // 宏替换,分配内存
从汇编角度,const定义的只读变量给出了相应的内存地址,而define给出的是立即数,所以const的只读变量在程序运行过程中只有一份拷贝,存在静态区,define的宏常量有多个拷贝
相比C,const在C++中的括号在哪
修饰指针
const修饰右边的第一个。 const int *p; // p可变,修饰int,p指向的对象不可变 int const *p; // p可变,修饰*,地址,则p指向的对象不可变 int *const p; // p不可变,p指向的对象不可变 const int * const p; //
修饰函数参数和返回值
不希望参数在函数体内意外改变或使用,返回值不可被改变

浙公网安备 33010602011771号