关于const
来源:互联网 发布:金蝶erp软件二次开发 编辑:程序博客网 时间:2024/05/21 15:04
理解一:
1、const在*前,内容不能变;
const int * p1;//const修饰的是int * p1,说明这个变量是不能变的,就是p1所指向的变量是常量变量
表示不能通过指针p1修改它指向的内存单元的值,但是p1本身可以修改。
int const *p2=&i; //与p1相同,const修饰的是*p2(表示所指向的变量)说明p2所指的变量不能改变,也就是指向常量变量;
不能修改p2指向的内存单元的值,但是可以修改p2使其指向其他的内存单元,这里p2指向了整形变量i。
所以p2=&j;修改p2,使其指向整形变量j,正确。
*p2=30;通过p2修改它所指向的内存单元的值,错误。
2、const在*后,指针不能变;
int *const p3=&i;//const修饰的是p3,说明指针变量的值不能改变,也就是不能让p3指针再指向其他值
p3本身指向整型变量的常指针,即p3初始化后不能再指向其他的内存单元,但是可以修改p3指向的内存单元的值。这里p3指向了整形变量i。
所以*p3=30;通过p3将变量i的值修改为2,正确。
p3=&j;修改p3,使其指向j,错误。
理解二:
const*,指针指向常量;const int * p1;//所指物是常量,而指针不是常量,可以不必须初始化。
int const *p2=&i;//p2取i的地址
*p2=30;//所指物是常量,所以错误
*const,指针本身为常量;int *const p3=&i;//指针本身为常量,必须初始化,且初始化为i的地址,不可修改
*p3=20;//修改p3所指向的内容
p3=&j;//指针自身是常量,所以错误
*const*,指针和所指物都是常量;
const int p1必须初始化,const int &p1必须初始化。
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于 const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 关于const
- 软件测试产物命名规范化
- Storm UI界面参数详说明
- android 实现和手机home键一样的功能。
- Android M权限管理(续)
- hdu 6030 (矩阵快速幂)
- 关于const
- ReactiveCocoa入门教程:第一部分
- const与static归纳总结
- HDU 6024 Building Shops
- TransitionDrawable一个能渐变显示的Drawable
- Spring IOC之通过JAVA代码配置Bean
- PAT 乙级 1034. 有理数四则运算(20)
- 自己做游戏(一)-PhotonServer配置
- centos 安装Theano详细教程