1. 程式人生 > >指標常量、和常量指標的比較

指標常量、和常量指標的比較

/* 定義一個常量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是一個指標常量
     */