const与指针、引用
2024-10-08 06:32:38
const与指针类型
定义一个指针*p:
const int* p = NULL;
int const* p = NULL; int* const p = NULL;
上面两行定义完全等价,第三行则不同。
下面两行定义也完全等价:
const int* const p = NULL;
int const* const p = NULL;
举例说明:
int x = 3;
const int* p = &x;
//p=&y; 正确
//*p=4; 错误
const修饰的是*p,所以通过*p修改x的值是错误的。
int x = 3;
int* const p = NULL;
//p=&y; 错误
const修饰的是p,p只能指向一个地址,不能再改变。
const int x = 3;
const int* const p = &x;
//p=&y; *p=4; 都是错误的
上面这种情况,就不能再做任何修改。
const与引用类型
int x = 3;
const int& y = x;
//x=10; 正确
//y=20; 错误
y被const修饰,所以不能通过y去修改x的值。
更多示例:
const int x = 5;
x = 5; //错误 int x = 3;
const int y = x;
y = 5; //错误 int x = 3;
const int* y = &x;
*y = 5; //错误
int x = 3, z = 4;
int* const y = &x;
y = &z; //错误 const int x = 3;
const int& y = x;
y = 5; //错误
const int x = 3;
int* y = &x; //错误 int x = 3;
const int* y = &x; //正确
上面这个示例,前者x是不可变的,而y是可变的,如果我们定义一个可变的指针指向一个不可变的变量,那么这就意味着存在风险,我们可以通过指针去修改x的值,这种情况编译器是不允许存在的,所以错误;对于后者,指针只有读权限,x则有读和写的权限,我们用一个权限小的对象接受一个权限大的对象这是允许的,而用一个权限大的对象接受一个权限小的对象则不允许。
最新文章
- windows 2003自动登录的具体步骤
- h5移动端-1
- linux奇技淫巧
- centos 升级 python后 python-setuptools pip 安装依赖报错
- js去掉空格
- 无法加载 DLL“rasapi32.dll”: 动态链接库(DLL)初始化例程失败。
- 怎么用MindMapper分类功能整理导图
- ASP.NET vNext 在 Mac OS
- commitProperties方法
- 用golang 实现一个代理池
- java基础(十二 )-----Java泛型详解
- JQuery实现数组移除指定元素
- ClientDataSet应用
- 与python的三天
- mysql主从复制(半同步方式)
- Jquery 组 tbale表格隔行变色
- AT2567 RGB Sequence dp
- 安装rlwrap方便sqlplus使用
- python第三十六课——2.迭代器对象
- Java通过ssh连接到Linxu和Windos服务器远程启动Tomcat