基本詞義 ios
意思就就是說利用const進行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數同樣使用! spa
使用方法指針
const int a=1;//這裏定義了一個int類型的const常數變量a;
但對於指針來講const仍然是起做用的,如下有兩點要十分注意,由於下面的兩個問題很容易混淆! code
咱們來看一個以下的例子:對象
//程序做者:管寧 //站點:www.cndev-lab.com //全部稿件均有版權,如要轉載,請務必著名出處和做者 #include <iostream> using namespace std; void main(void) { const int a=10; int b=20; const int *pi; pi=a; cout <<*pi << "|" << a <<endl; pi=b; cout <<*pi << "|" <<b <<endl; cin.get(); }
上面的代碼中最重要的一句是 const int *pi blog
這句從右向左讀做:內存
pi是一個指向int類型的,被定義成const的對象的指針; ci
這樣的一種聲明方式的做用是能夠修改pi這個指針所指向的內存地址卻不能修改指向對象的值。 get
若是你在代碼後加上*pi=10;這樣的賦值操做是不被容許編譯的!io
請看以下的代碼
//程序做者:管寧 //站點:www.cndev-lab.com //全部稿件均有版權,如要轉載,請務必著名出處和做者 #include <iostream> using namespace std; void main(void) { int a=10; const int *const pi=a; cout <<*pi << "|" <<a <<endl; cin.get(); }
上面的代碼中最重要的一句是 const int *const pi
這句從右向座讀做:
pi是一個指向int類型對象的const指針;
這樣的一種聲明方式的做用是你既不能夠修改pi所指向對象的內存地址也不能利用指針的解引用方式修改對象的值;
因此你若是在最後加上*pi=20,想試圖經過這樣的方式修改對象a的值是不被容許編譯的!