頂層const與底層const

代碼如下:

#include "stdafx.h"
#include <iostream>

using namespace std;

int main(){
     int a = 1,b=10;
     /*
     *1.頂層指針
     *即指針本身是一個常量,
     *不能重定向指針指向,但可以通過指針修改指針指向的變量值
     */
     int *const p = &a;
    //p = &b; 錯誤,不能重定向p指針指向
     *p = 4;//正確,可以修改指向的變量值
     a = 2; //正確,可以修改a值

     /*
     *2.底層指針
     *即指針指向對象是一個常量,
     *可以重定向指針指向,但不可以通過指針修改指針指向的變量值
     */
     const int *p1 = &a; //與int const *p1 = &a聲明等價
     // *p1 = 5;錯誤,不能通過p1修改所指對象的值,因爲*p1爲常量
     a = 5; //正確,可以修改a值
     p1 = &b; //正確,可以指針重定向

     /*
     *3.頂底層混合指針
     *即指針本身是一個常量,而且指向對象也爲常量
     *不但不能重定向指針指向,並且不允許通過指針修改指針指向的變量值
     */
     const int *const p3 = &a;
     //重定向指針指向和改變指針所指對象的值都不行
     // p3 = &b;
     //*p3 = 6;
     a = 3; //僅能修改a值
    system("pause");
    return 0;
}

小結:
1.const出現在*後,就是頂層,頂層const指針本身爲常量,不能重定向,但能通過*p修改值。
2.const出現在*前,就是底層,底層const指針所指對象爲常量,可以指針重定向,但不能通過*p修改值。
3.前後都有就是頂底混合,不能重定向也不能修改值,但直接修改所指對象的值是都可以的。

發佈了39 篇原創文章 · 獲贊 2 · 訪問量 8910
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章