指针常量、和常量指针的比较

/* 定义一个常量a,并初始化a的值为100 */
    int const a = 100;
    
    /* 定义一个常量指针p, 指向一个常量a */
    int const *p_a = &a;
    
    /* ps: 常量只能用常量指针 */
    
    /*
     常量指针: 指向常量的指针变量叫“常量指针”
      a> 定义格式 TYPE const *xxx = yyy
      b> 理解:
         根据“常量指针”的的定义可以看出“常量指针”是一个指针。
         该指针具有以下特点:
         b.1> 该指针本身是一个变量,所以该指针是可以被修改的
         b.2> 该指针只能指向一个常量
         b.3> 对于上述列子。const修饰的是*p_a,所以*p_a是“不变的,不可修改的”。又因为 *p_a === a,所以a也是不可修改的(符合a的定义)
     */
    
    
    /* 定义变量b, 初始化为100 */
    int b = 100;
    
    /* 定义一个指针常量 p_b */
    int * const p_b = &b;
    
    /*
     指针常量: 指针类型的常量叫“指针常量”
     a> 定义格式 POINTER_TYPE * const xxx = yyy
     b> 理解:
        根据“指针常量”的定义可以看出“指针常量”是一个指针类型的常量。其本质数据类型仍然是一个指针。
        该指针具有一下特点:
        b.1> 该指针本身是一个常量,所以该指针是不可以被修改的。
        b.2> 该指针只能指向“非常量数据类型”
        b.3> 对于上述例子. const 修饰的是指针符号p_b(pointer),故该指针p_b是一个指针常量
     */

猜你喜欢

转载自blog.csdn.net/Fusen0504/article/details/84134607