C++基础|const用法总结

   const 的主要作用是利用编译器帮助我们检查自己代码的正确性用const在代码中标示出“不应该改变”的地方,然后利用编译器检查这些地方是否真的没有被改变过,如果我们不小心修改而来这些地方,编译器就会报错

const在C和C++中的区别

  • C中,const修饰的量可以不用初始化,它本质上不是常量,叫常变量,不能当做常量使用如
const int a = 10;
int arr[a];

它不能作为左值被修改,但可以通过指针操作内存更改它的值

  • C++中,const修饰的量必须初始化,叫常量,可以用来定义数组的大小
  • 编译方式不同,c中,const就是当做一个变量来编译生成指令的
  • C++中所有出现const常量名字的地方都被常量的初始值替换了

注意被const修饰过的量,不可以在做左值
不能把常量的地址泄露给一个普通的指针或普通的引用变量

const和一级指针的结合

const修饰的是离他最近的类型

const int *p //修饰的是int  则*p不可被修改
int const *p//修饰的是int  *p不可被修改
int * const p//修饰的是int*  p=&a不可被修改
const int *const p//*p 和p 都不可修改
const 的右边如果没有指针的话,const不参与类型
int * <=const int *   //不可把常量地址泄露给普通指针
const int *<=int *  //是可以的

const和二级指针的结合

int a = 10;
int *p = &a;
int **q = &p;
const int **q;//修饰int ,**q不能修改
int *const *p;//修饰的是int*  *p不能修改
int** const p;//修饰的是int **    p不能修改
const int**<=int **   //是不对的
int **<=const int **//是不对的

const和指针引用的结合

用一句代码在内存的0x0018ff44处写一个4字节的10

int *p = (int *)0x0018ff44;
int *&&p=(int *)0x0018ff44
const int *&q=p=>const int **q=&p//是不对的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值