关于const的用法

1.const int *p=“hello”;
这个意思就是这个指针变量p指向的内容不能改变,但是可以改变让p指向其他的地址。
const char *p=“hello”;
p=“ok”;
printf("%s",p);
所以这个的运行结果就是ok,如果稍加修改
const char *p=“hello”;
p[0]=‘o’;
printf("%s",p);
这样编译的时候就会出现问题。

2.char *const p=“hello”;
这个意思就相反,指针指向的内容可以改变,但是不能改变指针的指向。
char *const p=“hello”;
p[1]=‘w’;
printf("%s",p);
会出现下述的结果在会这里插入图片描述
但是这样也是错误的,原因是这里是字符串和字符在windows下是存在常量存储区也是不可改写的所以我们修改一下程序
int n=3;
int * const p=&n;
*p=5;
printf("%d",*p);
那这样运行的结果就是5,完全正确,但是
int n=3,m=3;
int *const p=&n;
p=&m;
printf("%d",*p);
这样就会出现问题。
还需要注意一点就是,我们这样写也是错误的,这是初学者容易犯的错误。
int n=3;
int * const p;
p=&n;
printf("%d",*p);
我们要在这个常量指针定义的时候就赋值。

为了方便记忆我们可以这样理解
const int *p;
因为p是一个指向int型数据的指针,如果我们const int就是把这个int数据变成常量,所以p指向的数据当然是不可修改的啦。
而int *const p;
就是把指针变成一个常量,里面存的地址当然不可以改变,但是指向的另一个值并没有定义为常量,自然是可以改变的。
当然啦,
const int *const p;
这样写也是完全正确的啦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值