const 指標與指向const的指標

來源:互聯網
上載者:User

const 指標與指向const的指標

當使用帶有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中間加個*肯定是指標本身和它指向的內容都是不能被改變的。

/*定義指向const的指標(指標指向的內容不能被修改)*/

const int* p1;

int const* p2;

/*定義const指標(由於指標本身的值不能改變所以必須得初始化)*/

int* const p3=&a;

/*指標本身和它指向的內容都是不能被改變的所以也得初始化*/

const int* const p4=&a;

int const* const p5=&b;

原文:

http://www.cnblogs.com/younes/archive/2009/12/02/1615348.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.