int *const p 与 const int *p
来源:互联网 发布:手机制作软件工具 编辑:程序博客网 时间:2024/05/21 23:34
学过C/C++的同学肯定都有过那么一段被这几个东西整的晕头昏脑的时候,下面我们先看看一道题目:
int a = 248, b = 4;
int const c = 21;
const int *d = &a;
int *const e = &b;
int const * const f = &a;
问下面哪些操作会被编译器禁止:
选项A:*c = 32;
显然错误,c是int型变量,不是指针。
选项B:*d = 43;
错误。这里d被声明为常量指针(pointer to const),指针变量指向的值不能变,即不能通过指针
来修改变量的值,但可以通过a = 10;这样的方法直接修改a的值。
选项C:e = &a;
错误。e是一个指针常量(const pointer),即其指向不能改变,故错误。
选项D: f = 0x321f;
错误。这里的f既是指针常量又是常量指针,即其指向与所指向的值均是不可变的,故错误。
选项E:d = &b;
正确。d是常量指针,指向的内容不能变但指向可变。
选项F:*e = 34;
正确。e是指针常量,指向不能变但指向的内容可变。
是不是又有点晕了?那我就放大招了
要区别指针常量与常量指针只需要看const后面接的是什么就行了
比如对于
const int *d = &a;
const后面是int *d, *d是什么?a吧,就是指针d所指向的内容呀,这个内容用了一个const来限定
就是说这个内容是不可变的,所以d是一个常量指针。
再看:
int *const e = &b;
const后面是e,所以e是不可变的,即指针的指向不可变,e就是个指针常量了。
相信你理解了这个以后再遇到int const * const f = &a;这样玩出花儿来的定义也不会怕了,仔细
分析一下就可以想清楚了。
0 0
- int * const p 与 const int *p
- int *const p 与 const int *p
- const int *p与int *const p
- int *const p与int const *p与const int *p与const *int p
- const int *p,const * int p,int const *p
- const int * p,int const * p,int * const p
- 详解const int *p,int*const p,int const *p
- 详解const int *p,int*const p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p、int * const p、int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- Leetcode学习(6)—— Reverse Words in a String III
- swift3 去除空白行分割线 更改分割线颜色
- CodeForces 755C PolandBall and Forest
- Android开发中常见的设计模式
- mybatis解决jdbc编程的问题
- int *const p 与 const int *p
- Qt-QML-Slider-滑块-Style-后继
- Yii开发系列:Gii生成代码
- 稀疏矩阵的压缩存储以及快速转置
- inline 与 define
- tomcat部署java web注意事项
- java IO流总结
- 走进数据结构之排序(五)---直接选择排序
- javaWeb项目添加hibernate教程