【c++】const 限定符

#include <iostream>

int main()
{
    using namespace std;
    cout << "Hello World!\n";
    const int Months = 12;//==int const 
    int const M2 = 12;
    //M2 = 10;      error
    //Monnths = 13; error
    
   // const int Days; error

  //  int* Mon = &Months; error
   
    const int* Mon = &Months; //ok; ==int cont *

    int m = 13;
    const int* Mn2 = &m;
    cout << "const int* Mn2 = &m " << *Mn2 << endl;
    Mon = &m;//ok
  //*Mon = 20;//error
    cout <<"Mon = &m,Mon="<< *Mon << endl;//13 ok

    const int* const CMon = &Months;//==int const *const 
    int const* const c2 = &Months;
   // c2 = &m; error
   // *c2=10;  error
   // CMon = &m; //error
   //*CMon = 10;//error
    int* const cMon1 = &m;
    cout << "cMon1:" << *cMon1 << " m=" << m << endl;//13,13
    int m2 = 14;
    //cMon = &m2;//error;
    //cMon1 = &m2;//error
    *cMon1 =14;
    cout << "cMon1:" << *cMon1 << " m=" <<m<< endl;//14,14
}
 
常規變量的const
const int a=10;
等價於:int const a=10;
 
指針變量的const
const int* Mon = &Months
可以指向常量和一般變量
被指向的變量的值不能被更改,比如 :*Mon = 20;//error 是錯誤的,
但是這個Mon可以改變指向的地址,比如 Mon=&m
爲了限制指針的指向對象不被修改,於是有了:
int* const cMon1 = &m
//cMon1 = &m2;//error cMon1指向的對象地址就不能被修改
但是 *cMon1=14 又是可以的
爲了限制這種情況就有了:
const int* const CMon= &Months;
這樣 指向的地址,和解引用的值都不能被修改了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章