常量指针?指针常量?

       今天学习C++的时候,遇到了两个问题:常量指针?指针常量?我的天啊抓狂抓狂抓狂看了好些遍书本还是模模糊糊的。在网上找了一些网友写的文章,才恍然大悟。

       区别:const   int  *prt   和   int   *const prt。

       const   int  *prt 称为常量指针 (指向常量的指针)

       int   *const prt  称为指针常量  (该指针就是常量)

     

       例子:

       

//常量指针 :指向常量的指针
    const  int *pi;
    int ival1 = 30;
    int ival2 = 40;
    pi = &ival1;  //指针指向ival1

    cout<<"指向ival1:  "<<*pi<<endl;   

    pi = &ival2;//指针可以在任意时候重新赋值一个新内存地址
    cout<<"指向ival2:  "<<*pi<<endl;

    *pi = 100;//报错了
       

       pi指向的地址可以被修改(重新指向另一个地址),但不能通过*pi 方式来改变变量的值。

       有网友的解释是: const 修饰了*pi  (区分一下 *pi  和pi),所以*pi是一个常量,不能通过*pi方式来改变值

                                    而pi并没有被修饰,所以pi是一个变量,所以能被重新赋值。


//指针常量(该指针就是常量)
    int  ival1 = 30;
    int  ival2 = 40;

    int  *const  prt = &ival1;
    cout << "指向ival1 :"<<*prt<<endl;
    prt = &ival2;//报错,prt不能再指向另一个新地址
    *prt = 100;

    cout << "修改ival1的值 :"<<*prt<<endl;
        

        按照上面的解释可以得到: const 修饰了prt,所以prt是一个常量,不能被重新赋值。

                                                    而*prt 没有被const修饰,所以*prt 是变量,能通过*prt方式重新赋值。


         个人感觉这种解释的方式还是挺合适的。要是有更好的解释,可以留言一下,我学习学习。






         

       





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值