指针常量和常量指针
来源:互联网 发布:巴西农业部数据 mapa 编辑:程序博客网 时间:2024/05/19 12:18
请问下面的两行代码p有什么区别?
int* const p1 = &i; constint *p1 = &i;
我们的测试代码如下:
#include<stdio.h> int main(){ inti = 10; inta = 3; int* const p = &i; constint *p1 = &i; p= &a; *p= a; p1= &a; *p1= a; getchar();}
编译过程为:
错误 error C2166: 左值指定 const 对象
错误 error C2166: 左值指定 const 对象
指针常量和常量指针:
代码1中的p是不可以改变地址的指针,但是所指向的内容可以修改,叫做指针常量;
代码2中的p所指向的内容是不能改的,但是本身却是可以修改的,叫做常量指针。
如何从概念上区分:
我认为要区别指针常量和常量指针很容易,只要知道是谁修饰谁就好啦!比如说“指针常量”,意思是:指针是一个常量;“常量指针”的主体是一个指针,但是是指向常量的指针。所以对应了两个特性,那就是“指针常量”是一个常量,不能修改;“常量指针”是一个指针,但是指向的值不能够修改。
如何在代码上区分:
我觉得直接看const后面修饰的是什么就可以了。
int * const p = &i; p就是一个指针,且是个常量。因此p = &a;就是非法操作。
const int *p = &i; 那么就是*p为一个常量,但是指针p本身是可变的。因此*p = a就是非法操作。
两者合体:
那么一个变量,同时是常量指针和指针常量呢?那么只要用两个const就可以了吧?综合上面两个的定义,我觉得在只要这样就可以啦~~~
const int * const p1 = &i;
0 0
- 常量指针和指针常量
- 指针常量和常量指针
- 常量指针 和 指针常量
- 常量指针 和 指针常量
- 常量指针 和 指针常量
- 指针常量和常量指针
- 常量指针和指针常量
- 常量指针和指针常量
- 常量指针和指针常量
- 指针常量和常量指针
- 常量指针 和 指针常量
- 常量指针和指针常量
- 指针常量和常量指针
- 常量指针和指针常量
- 常量指针和指针常量
- 指针常量和常量指针
- 常量指针和指针常量
- 常量指针和指针常量
- Unity 3D 开发技巧分享&工具推荐
- Java Web 监听器 (计算在线人数)
- 使用Qt实现MDI风格的主窗体
- 内核中与驱动相关的内存操作之十六(异步I/O)
- MySQL常用到的一些phpmyadmin配置总结
- 指针常量和常量指针
- 点到线段的垂直距离
- webview出错
- 射线和三角形相交检测
- java正则表达式基础
- Ubuntu切换到ROOT账户 (copied)
- 使用线程互斥量,实现进程的PV操作
- 碧雲日暮兮,對素月而凝眸
- Oracle复制行记录的小技巧