C中的const和C++中的const

左值:放在赋值符号"="的左边.即写权限

1、限定写权限,将变量变成只读

const int a=10; int const a=10;两个定义方法都可以均表示a是一个常变量不可修改。

2、基本数据类型对于const透明

(int const *p=&a)==(const int *p=&a)
3、const修饰它的直接右边,使其只读

const int *p=&a;

const 直接修饰的*p,*p不可修改,但是p可以修改。

int *const p=&a;

const直接修饰的p,所以p不可以修改,*p可以修改。
4、权限可以同等或者缩小传递,但不能放大传递

int a = 10;
 int b = 20;//a,b可读可写
 const int ca = 30;//可读
 int *p1 = &a;//*p可读可写,a也可读可写,所以这种操作可以(同等操作)
 const int *p2 = &a;//*p2可读,a可读可写,所以这种也可以(缩小操作)
 int *p3 = &ca;//这种操作错误,因为ca只可以读,而*p3可读可写,要是这种操作可以,那么*p3可以修改ca,而ca 常变量,所以不可以。(放大操作)

******************

const必须要初始化

***********************************************************************************************************************************************

C++:

(第三句代码是进行强转,汇编时期,翻译指令,不与编译时期冲突,a此时没有const,属性可以进行修改)

C:

为什么相同的代码在C++和C中的结果不一样呢???

在C中const代表这个变量不能修改,在编译时期只是检查而已。

在C++中const在编译时期就进行替换,类似于宏替换,将所有的变量都替换成数字,这是跟C中的不同点。

但是其实变量的值还是变了的

当我调试到这个位置时,a的值已经改变,但是由于在编译期就给我们替换成了10,所以输出来就是10了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值