c++之const

1、const的含义

const是“constant”的缩写,意思是“恒定不变的”,也就是说const定义的是常变量 = 恒定不变的变量 = 不能改变的变量。常变量只能使用,不能改写。

2、const的作用

(1)定义常量

const int a = 10;

(2)保护被修饰的变量,防止意外修改,增强程序的健壮性。例如在函数中用const修饰形参,则该形参在函数内不可修改,如果有改动则会报错

int f(const int data)
{
    // return data++;  这种方式会报错
    return data;
}

(3)方便参数的调整和更改,const同宏定义#define 一样,一变都变。

const 和 #define 两者有以下区别

a、编译器处理不同:#define是预编译指令,而const是普通变量的定义。#define定义的宏是在预处理阶段展开的,生命周期结束于编译时期,不能调试;而const定义的只读变量是在编译运行阶段使用,可以调试。

  • const定义的变量只有类型为整数或枚举,且以常量表达式初始化时才能作为常量表达式。其他情况下它只是一个 const 限定的变量,不要将与常量混淆。

b、存储方式不同:#define定义的宏生命周期结束于编译时期,不占用内存(系统只会给变量分配内存);const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元,占用内存。从使用的角度看,用const定义的常变量具有宏的优点,而且使用更方便。

c、类型和安全检查不同:const定义的对象有数据类型,而宏定义的对象没有数据类型。所以编译器可以对const定义的对象进行安全检查,对宏定义则是字符串替换,不进行安全检查。

d、定义域不同:#define宏定义的作用域一定时全局的,而const定义的对象有全局和局部之分,如果在一个函数中用const定义了对象,则作用范围只限于这个函数。

(4)、可以节省空间,避免不必要的内存分配:const定义的对象在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。

#define PI 3.14159         //常量宏
const double  Pi = 3.14159;  //此时并未将Pi放入ROM中

double i = Pi;   //此时为Pi分配内存,以后不再分配!
double I = PI;  //编译期间进行宏替换,分配内存
double j = Pi;  //没有内存分配
double J = PI;  //再进行宏替换,又一次分配内存

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值