初谈指针常量和常量指针

在学习C++中,对于指针方面的知识学习方面还是有一定难度的,相关概念也很晦涩难以理解,本人整理了相关的知识点已经本人的理解,希望可以得到大家的更正和帮助到你们的学习。

一:指针与地址

   很多老师为了同学们能很快的理解和应用指针,往往会告诉大家:指针即地址! 其实我可以告诉你这是一个不严谨的说法,正确来说:指针是一个变量!变量本身会有系统给它分配一定的地址空间,而指针这个变量里面所存的值就是要指向的地址的值。这样说不知道大家有没有相对理解,指针本身也有占有地址空间,故有多重指针的出现,即指针里面存指针的地址,指向指针的指针。一般在32位的平台里,指针本身占4个字节的长度。

例如:int  a   =   1;

          int  *p   =   &a;

     其中  int  代表变量的类型  ,*  代表定义的变量为指针,p为指针的变量名,p里面存的是变量a的地址,即p为指向a的指针。

二:指针常量和常量指针

1.指针常量:

   指针常量其本质是一个常量,不可改变,是一个指针类型的常量,即始终指向同一个内存,指针常量不可以修改指针的值,但可以修改指向的内容,通俗的说就是指针常量保存的是一个地址是不能改的,一直指向这个地址,而可以通过该指针常量改变指向的那个地址里面的值或者内容。

  定义:int   a   =   10;

            int    *  const  p   =   &a;

       此时,p 里面将始终保存变量 a 的地址值,不可以改变,但可以通过 p 改变变量 a 的值,例如:*p  = 30;(*p即为变量a)。

      【 注意: *  在用的时候,除了定义指针时候,后面接变量的时候,可以理解为一个  取值符,取出该变量地址里面保存的值。而   &  一般在变量前面可以理解为  取地址符,即取出该变量所在的地址的值,在C++中有一个正规的叫法叫  引用 ,相应的在函数传参就有了 值传递 和 引用(址传递) 】 

2:常量指针

  常量指针其本质是指针,上面说到指针是一个变量,即常量指针本身是可以改变的,即可以指向不同的地址,而这个指针是常量类型的,代表的是指针一旦指向了某一块内存,则就不能通过常量指针来修改这块地址里面的值,与指针常量正好相反。

      定义:    int   a  =   10;  b  =    20;

                 const   int *p   =   &a;(或者   int  const  * p   两者等价)

                此时定义了常量指针  p   ,p  可以指向   a    后再改变为指向   b  ;但一旦指向  a  或者  b  后就不能通过  p  改变  a  或者  b  的值     例如:    p  =  &b;   (正确)       *p   =   30;(错误)

三:常量地址

    1.常量地址与普通地址的区别在于:例如  int    a  =  10;这里    &a    就是普通地址。而   const   int   a   =   10;这里  &a   就是常量地址   。

     2.  注意:   普通地址可以初始化普通指针或者常量指针,而常量地址不能初始化普通地址,只能初始化常量指针。

 

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值