程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 關注C++細節——萬能const限定符與指針

關注C++細節——萬能const限定符與指針

編輯:C++入門知識

 

不記得誰說過,能用const的時候盡量用const。確實,const為增加程序的健壯性做出了很大貢獻,但是const修飾指針的時候還是值得注意的。

一.指向const對象的指針;

如果指針指向const對象,那麼很顯然不能通過指針改變其所指向的const值。為了保證這個特性,C++語言強制要求指向const對象的指針也必須要具有const特性。

          const double = 1.0;

          const double *cpt;

          cpt=&d; www.2cto.com

const類型的指針變量為什麼可以重新賦值?其實這裡的cpt是一個指向double類型const對象的指針,const限定的是cpt指針所指向的對象類型,而並非cpt本身。也就是說,cpt本身並不是const。所以cpt在定義的時候不需要一定初始化,允許給cpt重新賦值,指向另一個const對象。

需要注意:可以把一個普通對象的地址賦給指向一const對象的指針,但不可以把一個const對象地址賦給一個普通類型指針,否則會出現編譯錯誤。不能使用指向const對象的指針修改基礎對象。無論const指針指向的對象是不是const類型,系統都會把它所指的所有對象都視為const,僅限於該指針的const對象(通過該指針不能修改其值);

二.const指針;

除指向const對象的指針外,C++語言還是提供了const指針——本身的值不能修改。

          int iNum = 1;

          int * const icpt=&iNum;

這裡的icpt是const類型——不能再指向其他的對象。任何企圖給const指針賦值的行為都回導致編譯錯誤。這裡值得注意的是指針本身的const類型並沒有說明是否能用該指針修改它所指向對象的值。指針所指對象的值能否修改完全取決於該對象的類型。

          int iNum = 5;

          int * const icpt=&iNum;

          *icpt=4;//這裡完全可以,因為iNum是普通變量

三.指向const對象const指針;

這裡要說明的就是上兩種情況的結合出現,即const類型的指針指向了const類型的對象。

          const double pi=3.14;

          const double * const pt=π

今天先總結這麼多了,歡迎大家留言交流學習。

 


作者 凌風  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved