const与指针
来源:互联网 发布:oracle sql修改字段名 编辑:程序博客网 时间:2024/05/22 19:26
I 指向常变量的指针变量
形如:constint *p = &a;
这种形式类似于以下形式:
*p = &a;
const int m = a;(这里m为*p)
这里m为一个只读变量,而p只是对变量a地址的一个引用,m的值为一个常变量的值。这里const只保证引用之后的值是一个常值,并不意味着a的值就不能改变,p的值也不能改变。打个比方,这里有一个物品,他的所有者是a,m只有对这个物品的使用权,却没有这个物品的修改权。所有着可以对这个物品随意改变,但是使用者就不行。因此我可以通过改变a的值来改变m的值,也就是*p的值。而*p的值是不可以改变的,这只是表示不能通过*p来改变a的值,因为它只有使用权,但是p的值是可以改变的。const只能限定通过引用a的地址之后*p的值不能改变但并不能限定p的值不能改变。所以可以通过改变p的值来改变常变量的值。例如:
Int a = 10;
Int b = 100;
const int *p = &a;
a = 20 (合法的改变,因为a是这个物品的所有者,可对这个物品进行人任意操作)
*p = 20 (错误,*p只拥有使用权,没有修改权)
P = &b (合法,const对p并无限制)
II常指针
形如:int*const p = &a;
这里的const只能限制p的值不能改变,不能限定*p的值。由于p保存的是a的地址,*p可以随意改变,因此可以通过*p改变a的值。也就相当于p永远是a在内存中的地址,但是a的值是可以改变的。*p的值就是a的值。同时也可通过改变a的值来改变*p的值。
III指向常量的常指针
形如:
const int * const p= &a;
这里第二个const限定的是p是一个常指针变量,永远是a的地址,p的值是不能被改变的。而第一个const限定的是不能通过*p来改变a的值。
如同:
Int a = 10;
Int b = 100;
const int * const p= &a;
P = &b(错误。受第二个const限制)
*p =b(错误,受第一个const限制)
a = 20 (合法)
也就是相当于这种情况是上面两种情况的综合。如果限定a的值也不能自己改变,可以这样定义:
constint a = 10;- const与const指针
- 指针:const与指针
- const 指针与指向const的指针
- 指向const的指针与const指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- const 指针与指向const的指针
- 未来管理软件的发展趋势
- 华东师范介绍的覅幅度死囧反对宋I哦if地送放松啊
- 企业流程管理的误区
- 安装xcode6.0.1出错"xcode failed to download",解决办法
- 关于python中的“保护”权限
- const与指针
- php中的单例模式
- 浅谈C++中指针和引用的区别
- VisualSVN Server 修改用户密码
- 运算放大器工作原理及选择
- C++类内存分布
- Linux下使用SecureCRT的方法:破解&编码
- 只会CSS还不够,LESS、SASS、BootStrap、Foundation一网打尽!
- 上课吗浪费点卡上课了陌生地方立刻马上发的了看离开发多少离开的方式