常量指標與指標常量
這樣連著的兩個詞,前面的一個通常是修飾部分,中心詞是後面一個詞。這裡的常量指標和指標常量便是如此。
常量指標,表述為“是常量的指標”,它首先應該是一個指標。
指標常量,表述為“是指標的常量”,它首先應該是一個常量。
常量指標,它是一個指標,什麼樣的指標呢?它是一個指向常量的指標,就是說我們定義了一個常量,比如 const int
a=7; 那麼我們就可以定義一個常量指標來指向它 const int *p=&a; 也可以分成兩步,即 const int *p;
p=&a; 那麼它有什麼作用呢?首先我們來說說常量的屬性,因為我們的指標是指向常量的,常量和變數的變數的不同之處在於我們不能對其內容進行
操作,具體說就是修改,而我們的指標是什麼,它的內容本身是一個地址,設定常量指標指向一個常量,為的就是防止我們寫程式過程中對指標誤操作出現了修改常
量這樣的錯誤,應該如果我們修改常量指標的所指向的空間的時候,編譯系統就會提示我們出錯資訊。總結一下,常量指標就是指向常量的指標,指標所指向的地址的內容是不可修改的。
指標常量,首先是一個常量,再才是一個指標。常量的性質是不能修改,指標的內容實際是一個地址,那麼指標常量就是內容不能修改的常量,即內容不能
修改的指標,指標的內容是什麼呀?指標的內容是地址,所以,說到底,就是不能修改這個指標所指向的地址,一開始初始化,指向哪兒,它就只能指向哪兒了,不
能指向其他的地方了,就像一個數組的數組名一樣,是一個固定的指標,不能對它移動操作,比如你使用 p++; 系統就會提示出錯。但是它只是不能修改它指
向的地方,但這個指向的地方裡的內容是可以替換的,這和上面說的常量指標是完全不同的概念。作一下總結,指標常量就是是指標的常量,它是不可改變地址的指標,但是可以對它所指向的內容進行修改。對了,忘了說說它怎麼用,舉個小例子 int a; int * const p=&a; 也可以分開寫 int a; int * const p; p=&a;
當然,也可以定義個一個指向常量的指標常量,就把上面的兩個綜合一下,表示如下
const int a=7; const int * const p=&a;