const 指標與指向const的指標

2021-06-18 04:18:13 字數 1146 閱讀 6160

當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。

先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。

const 

int* p; (推薦)

int const* p;

第一種可以理解為,p是乙個指標,它指向的內容是const 

int 型別。p本身不用初始化它可以指向任何標示符,但它指向的內容是不能被改變的。

第二種很容易被理解成是p是乙個指向

int的const指標(指標本身不能被修改),但這樣理解是錯誤的,它也是表示的是指向const的指標(指標指向的內容是不能被修改的),它跟第一種表達的是乙個意思。為了避免混淆推薦大家用第一種。

再說const指標,它的意思是指標本身的值是不能被修改的。它只有一種寫法

int* const p=乙個位址; (因為指標本身的值是不能被修改的所以它必須被初始化)

這種形式可以被理解為,p是乙個指標,這個指標是指向

int 的const指標。它指向的值是可以被改變的如*p=3;

還有一種情況是這個指標本身和它指向的內容都是不能被改變的,請往下看。

const 

int* const p=乙個位址;

int const* const p=乙個位址;

看了上面的內容是不是有點暈,沒關係,你不用去背它,用的多了就知道了,還有個技巧,通過上面的觀察我們不難總結出一點規律,是什麼呢?也許你已經看出來了,什麼!竟然沒看也來,那只好還得聽我嘮叨了。這個規律就是: 指向const的指標(指標指向的內容不能被修改)const關健字總是出現在*的左邊而const指標(指標本身不能被修改)const關健字總是出現在*的右邊,那不用說兩個const中間加個*肯定是指標本身和它指向的內容都是不能被改變的。有了這個規則是不是就好記多了。

什麼還是暈,那就看下面的程式,你把它編譯一下看看錯誤提示就明白了。

code highlighting produced by actipro codehighlighter (freeware)> 1 #include using namespace std;

int main(int argc, char *argv)

const 指標與指向const的指標

當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...

const 指標與指向const的指標

當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...

const 指標與指向const的指標

當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 intconst p 第一種可以...