const

1.在C语言中:

const int a=10; 此时a不可作为左值   但是int*p=&a;是正确的,在C语言中const修饰的称为常变量

2.在C++中

上述int*p=&a;表达式即为错误的,因为在C++中const修饰的称为常量,常量的值不允许改变

在C++中编译期间会将使用该常量值的地方替换成了常量的值,会使普通指针不可指向

3.int arr[]中括号中的数,即数组长度在C语言中const int a=10; int arr[a];是错误的因为编译器就需要确定数组长度,而编译器无法去地址中取值。但是相反的在C++中就可以。

4.C++中常量一定要初始化

5.const修饰的全局变量是一个local的符号,而链接时只关心local的符号

无法解析的外部符号有两种情况:①不存在②存在但是无法使用(local符号) 通过extern解决

6.C++中常量是否退化成常量?如下

①int c=20; const int d=c;//此处退化为常变量

②有 void fun(const int a)在main中调用fun(10)也会退化为常变量

这种是因为编译器也无法确定,都会导致const修饰的退化成为常变量

7.const 修饰的是距离它最近的完整类型,修饰的内容是属于const所修饰的类型的内容

8.注意:不能泄露常量的地址给非常量的指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值