• 常量指针与指针常量


    常量指针与指针常量是两个很容易被混淆的概念,他们的核心是const关键字,const限定一个变量不允许被改变。const在一定程度上可以提高程序的安全性和可靠性。

    一、常量指针

    顾名思义,是一个被常量修饰的指针,意味着const去修饰一个*p,所以常量指针的本质是指针,表示这个指针时一个指向常量的指针,因此指针指向的空间中的内容是不能改变的。指针常量通常的书写格式如下:(两种格式等价)

    1)const int *p;

    2)int const *p;

    注:使用常量指针时要注意,指针指向空间的内容不可以通过指针来改变,但是可以使用原来的声明去改变。但是这个指针可以被改变。如下:

    const int a = 1;

    const int b = 2;

    const int *p1 = &a;

    p1 = &b; // 虽然指针指向的常量不可以被改变,但是指针本身可以重新指向其他地址。

    根据以上特性,指针常量可以不在初始化时赋值。而常量必须在初始化时赋值。

    因此常量指针在区分时,*与变量之间是不会存在const的,即*左边永远有const。

    二、指针常量

    指针常量,指针来形容常量,顾名思义,指针常量本质为常量,说明这个常量的值是一个指针。它的表现形式如下:

    int a = 1;

    int * const p = &a;

    如上所示,p是一个常量,它存放的是&a的值,也就是a的地址,那么由于const p 的特性,所以指针常量中p的值不会改变,因此指向的对象不能更改,但是这个对象是可以被任意修改的

    三、指向常量的常量指针

    综合以上两个概念,就可以产生一个指向常量的常量指针,表现形式如下:(两种方式等价)

    const int a = 1;

    const int b = 2;

    const int * const p1 = &a;  

    int const * const p2 = &b;

    如上,一个常量指针被const所修饰,首先说明了p1的值不会被改变,同时,该指针指向的对象也不会改变。因此这是一个从指向空间与空间内的对象都被限制的定义。

  • 相关阅读:
    BZOJ3670:[NOI2014]动物园(KMP)
    415. [HAOI2009] 旅行
    U10223 Cx大帝远征埃及
    U10206 Cx的治疗
    2741. [济南集训 2017] 掰巧克力
    复习题目汇总 over
    7-20 表达式转换(25 分)
    7-19 求链式线性表的倒数第K项(20 分)(单链表定义与尾插法)
    7-18 银行业务队列简单模拟(25 分)
    7-17 汉诺塔的非递归实现(25 分)(有待改进)
  • 原文地址:https://www.cnblogs.com/yuemw/p/8011803.html
Copyright © 2020-2023  润新知