首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >const修饰指针变量

const修饰指针变量

作者头像
趙卋傑
发布2026-01-12 14:44:19
发布2026-01-12 14:44:19
960
举报

1.const修饰普通变量

代码语言:javascript
复制
int a = 0;
a = 2;//此时变量a可以被修改
const int b = 0;
b = 2;//此时b不能被修改

上述代码中n是不能被修改的,其实a本质是变量,只不过被const修饰后,在语法上加了限制,只要我 们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改a。

但是如果我们绕过a,使⽤a的地址,去修改a就能做到了,虽然这样做是在打破语法规则。

代码语言:javascript
复制
int main()
{
 const int a = 0;
 int*p = &a;
 *p = 1;
 printf("%d\n", a);
}

2.const修饰指针变量

首先我们先去分p和*p的含义

代码语言:javascript
复制
int a = 0;
int *p = &a;
*p = 1;

1.p里面存放的是a的地址 2.p本身是变量有自己的地址 3.*p是p指向的空间,即a(通过p找到a)

const修饰指针变量时分为两种情况,可以简单地区分为const关键词在 * 的左边或右边

代码语言:javascript
复制
//在*左边
const int* p
int const* p
//在*的右边
int* const p

const放在*左边时限制*p,不能通过指针变量p来修改p指向空间的内容;*p = 2 err  但p = &b 是正确的,因为p不受限制

代码语言:javascript
复制
int a = 1;
int b = 2;
const int* p = &a;
*p = 2;//err
p = &b;
printf("%d\n", a);

此处需要注意的是,将b的地址赋给p变量,*p指向的空间变为b的空间,a的值未得到改变但*p的值得到了改变

const放在*右边时限制p变量,p变量不能被修改,没办法指向其他变量,但还可以通过p来修改p所指向的对象的内容

代码语言:javascript
复制
int a = 1;
int b = 2;
int*const p = &a;
*p = 2;
//p = &b;err
printf("%d\n", a);

 这里是直接对p指向的空间进行修改,a的值得到了改变,p本身的地址从未发生改变

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.const修饰普通变量
  • 2.const修饰指针变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档