指向常量的指针与常量指针的异同

       当我们在模块化程序设计时,有一些数据希望共享,而又不希望其他程序修改它,也就是”只读“,我们常用const来修饰它。

       指向const常量的指针:一个指针,如果通过它实施的间接引用操作只能读取不能修改,即它指向的空间是只读的,我们称这个指针为指向const常量的指针或只读指针。

       const  int *pc;   或 int const* pc;

       表示指向const常量的整形指针,并不是说给他传址的变量必须是const常量型,而是指任何类型的变量的地址传给他,他都不能间接的修改该变量的值!

      如:  int n = 5;

             const int *pn;

             pn = &n;

             *pn = 6;    //非法!不能修改该指针间接引用的数据

            n = 6;       //合法

      当然,一个const常量型要传址,必须传给指向const常量的指针。一般“只读”函数中会用到指向常量的的指针,即函数操作只读目标空间的内容而不做修改,如求和、打印函数。


       const常量指针:如果指针本身是常量型,那么称为const常量指针。

       如:int a = 5;

               int * const pc = &a;    // 因为指针本身是常量型,所以常量指针必须初始化

               *pc = 6;   //可以修改常量指针所指向单元的内容 

       注意哦,常量指针可以修改指向的数据!所以不能把const常量型数据传址给常量型指针!

       与指向const常量的指针不同,const常量指针可以赋值给非const常量指针。const常量指针是指它存储的地址是不能改变的,它赋值给非常量指针的是地址值拷贝,其自身存储的地址并不改变。一般那些要用到数据地址空间固定的函数可以用常量指针,如数组操作。


       总之呢,指向常量的指针就是说这个变量是只读的,你用这个指针不能修改它,const修饰符在  *  前

                       常量指针就是这个指针所指向的地址单元是固定的,const修饰符在   *  后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值