C++中“指向const對象的指標”和“const指標”

來源:互聯網
上載者:User

       const是C++中引入的一個新的關鍵字,它為C++編程帶來了很大的方便。指向const對象的指標和const指標是兩個名字很接近的概念,對於初學者來說非常容易搞混,這裡對它們進行區分。
  

1、指向const對象的指標

  可以這樣理解指向const對象的指標:指向const對象的指標就是一個指標,不能通過它來修改它所指向的對象的值
  聲明方法:const int *p;
  const對象在初始化後是不允許對其值進行修改的,因此,我們不能用一個普通指標指向一個const對象,即下面的賦值會引起編譯錯誤:
  const int i = 1;
  int *p = &i;//出錯
  否則的話,我們就可以利用普通指標來修改一個const對象的值,那麼const也就毫無意義了。
  正確的方法是利用一個指向const對象的指標來擷取const對象的地址:
  const int i = 1;
  const int *p = &i;//正確
   這樣,利用指向const對象的指標也是不能修改它所指向的const對象的值的。
  需要注意的兩點:
  指向const對象的指標本身不是const類型(這也是它與const指標的主要不同點),所以它可以指向另一個const對象;
  指向const對象的指標可以被賦予一個非const對象的地址,但是此時試圖通過此指標來修改對象的值的操作是非法的

 

2、 const指標


  可以這樣理解const指標:const指標就是一個指標,它本身就是const類型,所以將它初始化後不能再改變它的指向,即不能讓它指向一個新的對象
  聲明方法:
  int *const p;//指向非const對象的const指標
  const int *constp;//指向const對象的const指標
  由以上聲明方法可以看出,const指標可以指向const對象和非const對象,但是兩者的聲明方法是不同的。
  使用const指標不可以修改其地址值,但是const指標指向非const對象,就可以利用它修改它所指向的對象的值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.