常量指针 和 指针常量

原文链接:https://blog.csdn.net/qq_41592486/article/details/125400305

1. 指针常量的本质是一个常量,使用指针来修饰它,那么说明这个常量的值应该是一个指针,其格式应为:int * const p;这个值因为是常量,所以不能被赋值;

2. 常量指针本质是一个指针,使用 常量 修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改;

        (1)const int *p;

        (2)int const *p;

一、常量指针
        定义:指向常量的指针。该指针指向一个常量,常量的值不可变,不可以通过该指针修改其值,但是该指针可以指向其他常量。(指针地址可以变,值不能变)

int a = 0,b = 0;
const int *p = &a;
*p = 1; //错误,不可修改常量值
*p = &b; //正确,可以指向另一个常量

二、指针常量
        定义:指针本身是常量。该指针只能指向某个常量,不可再指向其他常量。(指针地址不可变,值可变。注:指针常量在定义时要赋初值。)

int a = 0,b = 0;
int* const p = &a;
*p = 1; //正确,可以修改值
*p = &b; //错误,不可改变地址

三、指向常量的指针常量
定义:指向常量的常指针。(指针地址不可变,值不可变)

int a = 0,b = 0;
const int * const p = &a;
*p = 1; //错误,不可以修改值
*p = &b; //错误,不可改变地址

四、区分记忆:

如果关键字 const 出现在 * 号左边,表示被指物是常量,侧重点常量,值不可变;

如果 * 关键字const左边,表示指针自身是常量,侧重点指针,地址不可变;

如果出现在 * 号两边,表示被指物和指针都是常量,地址和值都不可变。

(简化记忆:const 与 * 号,谁在左边就以谁为侧重点。)

//注意:两种写法的意义相同,都是常量指针。
const int* a;
int const* a;
              

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值