指针常量和常量指针详谈

 首先介绍一下:

   指针的值,是指指针变量内存空间中的值,在这里也就是一个地址。

   指针所指向地址的值,是指指针内存空间中的地址中的值。

   eg:int a=50;

        int *p=&a;

        这里指针的值为变量a的地址,即&a;而指针所指向的值是指变量a的地址中的值,也就是501:指针常量

      指针常量也就是所指针的值不变,也就是指向的地址不变。但所指向地址当中的值可以改变,也可通过解引用来改变它的值。

     eg:int a=50;

          int b=20;

          int *const p=&a;

          p=&b;//错误,p所指向的内存不能改变。

          *p=30;//可以,可以通过指针运算符来改变指针所指向空间中的值;

          a=40;//可以,指针所指向空间的值可以变。

2:常量指针

         常量指针指指向空间中的值是对于指针来说是个常量,也就是说不能通过解引用来改变其值。

   eg:int a=20;

        int b=30;

       const int *p=&a;//这里和int const *p=&a是一样的,同样是常量指针。

       p=&b;//可以

       *p=60;//不可以,不可以通过指针运算符来改变其值。

       b=50;//可以

 

总结:指针常量和常量指针区别在于一个指向的地址不可以改变,一个不可以通过指针运算符来改变指向空间中的值,但都可以通过指向空间的变量来改变其中的值

 

3:const int*const p

     这种形式是上面的指针常量和常量指针的综合体,也就是说其不能改变其指向空间的地址,也不能通过指针运算符来改变指向空间的值。

     eg:int a=10;

          int b=20;

         const int *const p=&a;

         p=&b;//错误

         *p=50;//错误

         a=40;//正确

        

 

 

 

 

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值