C/C++中的常量指针与指针常量
来源:互联网 发布:不读书 知乎 编辑:程序博客网 时间:2024/04/27 14:28
常量指针
常量指针是指向常量的指针,指针指向的内存地址的内容是不可修改的。
常量指针定义“const int *p=&a;”告诉编译器,*p是常量,不能将*p作为左值进行操作。但这里的指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许修改的,例如:
int a=0,b=1;const int *p; //声明常量指针pp=&a; //p指向ap=&b; //修改指针p让其指向b,允许*p=2; //不允许
指针常量
指针常量是指针的常量,它是不可改变地址的指针,但可以对它所指向的内容进行修改。
指针常量定义"int *const p=&a;"告诉编译器,p是常量,不能作为左值进行操作,但允许修改其指向的内容,即*p是可修改的。指针常量必须在声明的同时对其初始化,不允许先声明一个指针常量随后再对其赋值,这和声明一般的常量是一样的,例如:
int a=0,b=1;int *const p1=&a; int *const p2; //不允许,必须对其初始化p2=&b; //不允许,p2是常量不允许作为左值*p1=2; //允许修改指针*p1的值
如果指针作为函数参数,当我们不想被调用函数随意修改参数指针而只是想修改参数指针指向的内容时,我们常把指针常量作为参数。例如:
有两个整形变量a,b,我们写个函数用于交换a,b的值,利用指针作为形参,函数修改参数指针的值是我们不希望的,这时可将参数设为指针常量,如果函数对指针修改编译是将报错。
void Exchange(int *const a,int *const b){ int temp; temp=*a; *a=*b; *b=temp}
事实上,如果函数不修改参数本身的值,我们一般对参数加上const限定,这也是提高代码质量的一个小技巧,在类的方法中,如果方法不修改类属性的值,我们也常将方法加上const。
转自:http://www.cnblogs.com/fly-angel/archive/2011/09/13/2174527.html
0 0
- C语言中的常量指针与指针常量
- C/C++中的常量指针与指针常量
- C语言中的常量指针与指针常量
- C/C++中的常量指针与指针常量
- C/C++中的const--常量指针与指针常量
- C/C++中的常量指针与指针常量
- C语言中的指针常量与常量指针
- C/C++中的常量指针与指针常量
- C常量指针 与指针常量区别
- C常量指针 与指针常量区别
- C语言中的常量指针和指针常量
- C中的概念 指针常量 常量指针 数组名
- C/C++中的常量指针和指针常量
- 【编程语言】C++----常量指针与指针常量的区别
- 学习《C Primer Plus》---指针常量与常量指针
- c常量指针与指针常量情况分析
- c学习--指针常量与常量指针i
- 【C/C++语言】指针常量与常量指针的区别
- js复制兼容:ZeroClipboard复制到剪切板(支持IE、FF、Chrome)
- novnc安装
- HDOJ 2215 Maple trees 最小圆覆盖
- Qt项目文件夹有层级要求?
- 小提醒:关于删除软连接
- C/C++中的常量指针与指针常量
- 如何才能做到网站高并发访问?
- 每日工作记录
- crontab 使用
- 當愛已成往事
- 解决屏幕有时会闪现同一张图片2次的原因
- 系统调用与IO库函数的缓冲与不带缓冲问题
- OpenWRT添加模块(一)Makefile和Config.in
- android 滤镜效果