【C++】之const

目录

一.C/C++中const的区别

1.C中的const

2.C++中的const

二.const/#define的区别

1.区别

2.const的优点


一.C/C++中const的区别

1.C中的const

本质

用const修饰的是常变量,本质上仍然还是变量,只是具有常性(即不可修改),既然本质是变量,就会给其分配相应的空间

特性

1).const修饰的常变量具有常性不可被修改

2).由于本质上仍然还是变量,所以不能作为数组方括号内的数字

3).可以通过指针间接修改

4).在编译过程中,与变量拥有一样的处理方式 ,会有类型检查

5).在定义时不初始化并不会报错

2.C++中的const

本质

用const修饰的是常量,本质上就是常量,具有常性,不会为其在内存上分配空间,而是存在于符号表中,但由于C++具有兼容C的特性,所以在extern或者取地址(&)操作时,才会在内存上给其分配空间,但不会使用其存储空间的值

特性

1).本质就是常量,可以在数组方括号内使用

2).作为左值不可被修改

3).完全可以代替#define定义的宏常量,但不可以代替宏函数(宏函数在C++中由inline代替)

4).在定义时必须被初始化

5).会退化成常变量(当用变量来初始化const修饰的常量时,该常量会退化变为常变量)

6).在使用时,是在编译阶段以符号表中的进行替换(有类型检查),并不会使用空间内的值

 7).无法通过指针或者引用间接修改

二.const/#define的区别

1.区别

const常量在编译阶段替换;宏常量在预处理阶段替换

const常量有类型检查;宏常量没有类型检查

const常量在整个进程运行期间只拷贝一次(常量的值在符号表中);宏常量不会拷贝,在预处理阶段就已经全部替换了

const常量可以调试;宏常量只是简单的字面替换不可以调试

2.const的优点

在C++中,完全可以并且推荐用const代替宏常量

const常量有类型检查,方便调试,节省空间,提升效率(没有不必要的内存分配),在整个进程运行期间只拷贝一次

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值