【词条】const

1、char const * const s1= "hello";

      char const * s2 = s1;  //合法

      char *const  s2 = s1;  //不合法

       一直想不通为什么会出现上面的情况?

       (1)先来看个简单的例子:

       int const a = 3; //定义一个int类型的常量

       int b = a;//合法

       可以看出,把一个常量赋值给一个普通变量是合法,也就是说:

       char * const s1 = "hello";

       char * s2 = s1; //合法

       上面只是保证变量a和变量s1不能够被重新赋值,但是变量b和变量s2是可以被重新赋值的。

       (2)char const *s1="hello";

                 char *s3 = s1;//不合法

                  s1本身是可以被重新赋值的,它不是常量指针,但是它指向的内容是不允许修改的;

                  假设char *s3 = s1;是合法的,那么我们就可以修改s1所指向的内容了,这是不允许的,编译器会报错。

         总结:对于一个本身是常量的变量,我们可以把它赋给一个普通变量(包括指针变量);

                     对于一个所指向的内容不允许修改的指针,必须一致保持“所指向的内容不允许修改”,不管如何赋值。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值