您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“C++中的const怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C++中的const怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
const 是 constant 的縮寫,本意是不變的,不易改變的意思。在 C++ 中是用來修飾內置類型變量,自定義對象,成員函數,返回值,函數參數。C++ const 允許指定一個語義約束,編譯器會強制實施這個約束,允許程序員告訴編譯器某值是保持不變的。如果在編程中確實有某個值保持不變,就應該明確使用const,這樣可以獲得編譯器的幫助。
常量聲明的語句的形式: const + 數據類型說明符 + 常量名 = 常量值
數據類型說明符 + const + 常量名 = 常量值
注意: 符號常量在聲明時一定要賦初值,且在程序中不能改變其值。
const float PI = 3.14159; //下面則是錯誤的聲明 const float PI; PI = 3.14159;
目前了解的形式
例如:
const int *p (int const *p) int *const p const int* const p
1.const int *p (int const *p) 的意義
二者表達的意思一致,即 *p 是個 const ,不能通過 *p 修改 p 的指向,所以也可以叫它為只讀型指針
由于是將指向的數據視為常量,定義的時候可以不用初始化
1. int a = 0; const int* p; p = &a; *p = 2; //錯誤,不能通過*p 修改值 2. int a = 0; const int* p = &a; a = 1; cout
2. int* const p 的意義
該定義將 p 視為一個const常量,所以定義時就要初始化,且p 指向的位置不能改變,所以也可以叫它指針常量
1. int a = 0,b =1; int* const p = &a; p = &b; //錯誤,p 的指向已不能改變 2. int a = 0, b = 1; int* const p = &a; *p = b; cout
(const int* p 與 int* const p 與 const int* const p 的區別)
const int* p 表示把 p 指向的變量看成常量
int* const p 表示把 p 自己定義為常量,所以定義時就要初始化
const int* const p 表示 p、*p 都是常量,即 p 的指向不能改變,也不能通過 *p 改變 p 指向的值
有個評論講的很有意思,share一下:
看”effective c++”第三條講到: 只需要判斷const是在 * 的左邊還是右邊即可。 左邊則是修飾被指物,即被指物是常量,不可以修改它的值; 右邊則是修飾指針,即指針是常量,不可以修改它的指向; 在左右兩邊,則被指物和指針都是常量,都不可以修改。
int c = 3; int a = 2; int b = 1; //const出現在*左邊,則被指物是常量 const int * pi = &a; *pi = b;//不正確 被指物是常量 pi = &c; //正確 //const 出現在* 右邊,則指針是常量 int * const p = &a; p = &c;//不正確,指針是常量 *p = c;//正確 //const出現在*左右兩邊,則被指物和指針都是常量 const int * const ptr = &a; ptr = &c;//不正確,指針是常量 *ptr = c;//不正確,被指物是常量
注意事項 !
1.如果有const int a = 0; 那么必須是 const int* 才能指向 a,像 int* p =&a; 是非法的 2.const int a =10; int* p =&a; // 錯誤,這是不能取地址的,否則有修改值的能力
讀到這里,這篇“C++中的const怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。