const指针

来源:互联网 发布:视频录制软件免费版 编辑:程序博客网 时间:2024/06/06 12:50

const修饰的变量便不可改变。const与指针变量结合的时候,就有了指针内容可变还是指针指向的地址单元可变的问题例如:

const  int  * p;                p是可以可变的,*p是不可变的

int  const  * p;                p是可以可变的,*p是不可变的

int  * const  p;                p是可以不可变的,*p是可变的

const  int  *  const  p;     p是可以不可变的,*p是可变的

 

int  **  const  q;          q是可以不可变的

int  *  const  *q;          *q是可以不可变的

const  int  **  q;          **q是可以不可变的

 

判断的方法:去掉离const最近的类型,然后看const修饰的是什么,什么就不可变。比如:

                     const  int  * p,去掉intconst修饰的是* p,所以p是不可变的。

 

在代码中出现const时,主要看两点:

(1)有没有明确的给const修饰的量进行赋值

(2)有没有可能通过指针或者引用间接的修改const修饰的量

 

eg. const int a = 10;

      int *p = &a;

可以看到没有明确的给a赋值,但是存在通过解引用修改常量a的风险。会报错:无法从“const int *”转换为“int *

 

 

 

 

 
原创粉丝点击