1. 程式人生 > >C++中的const關鍵詞用法

C++中的const關鍵詞用法

在C語言和C++中,有一個用來修飾所有變數的關鍵詞const,表示將此變數變成常量的意思。比如,對int型變數加上一個const,那麼該變數就是一個常量了,也即該變數無法再發生改變了。例如下面的程式碼片段:

cont int i = 5;
i = 8;  //此處會產生編譯錯誤,因為i被const修飾,因此i的值不能再改變
同樣地,const除了可以修飾基本型別資料外,還可以用來修飾指標和引用,但修飾指標的時候會有常量指標和指標常量之分:
  • 常量指標:const關鍵詞是左結合的關鍵詞,若左邊為空則為右結合,也即從左往右讀。例如以下程式碼片段:
const int* p;

此處是一個常量指標,從左往右讀,先是常量再是指標。對於對於常量指標,顧名思義,這是一個指標,但指向的是一個常量。也即一旦指向了某個變數,則不能通過指標改變該變數的值,因為該變數被指定為了常量。例如以下程式碼片段:

const int* p;
int i = 8;
p = &i;  //常量指標指向變數i,相當於把i視為了常量
*p = 5;  //產生編譯錯誤,因為常量的值無法通過指標改變。
int j = 40;
p = &j;  //合法,此處改變的是指標,即將指標更換一個指向的變數,由原來的指向i改為指向j
  • 指標常量:相對於常量指標,這裡是一個指標常量,也即,本身是一個常量,但該常量是一個指標,這表示該指標一旦指向了某個變數就不能再指向其他變數,因為這是一個常量,例如以下程式碼片段:
int* const p;
int i = 8;
p = &i;   //此處指標常量指向i
*p = 5; //合法,此處的p是常量,而非指向的i是常量 int j = 40; p = &j; //此處產生編譯錯誤,因為p是一個常量,前面已經指向了i,此處則不能再指向j
  • 常量指標常量,這表示該指標是常量,指向的變數也是一個常量,這就意味著一旦確定了指向的變數則以上兩種情況都滿足,例如以下程式碼片段:
const int* const p;
int i = 8;
p = &i;
*p = 5;  //產生編譯錯誤
int j = 40;
p = &j;  /產生編譯錯誤
  • 除了指標之外,也有引用與關鍵詞const相結合的情況,但是要注意的是引用常量是沒有任何意義的,因為引用一旦宣告並初始化之後就無法再改變了,相當於指標常量,也即:int& r 相當於const int* p,那麼int& const r就相當於是const int* const p了。例如下面程式碼片段:
int i = 8;
int& const r = &i;
r = 5;  //非法,產生編譯錯誤,錯誤原因和const int* const相似
int j = 40;
r = j; //不會產生編譯錯誤,但是無意義。

如有錯誤,歡迎大家批評與指正!

相關推薦

C++const關鍵詞用法

在C語言和C++中,有一個用來修飾所有變數的關鍵詞const,表示將此變數變成常量的意思。比如,對int型變數加上一個const,那麼該變數就是一個常量了,也即該變數無法再發生改變了。例如下面的程式碼片段: cont int i = 5; i = 8;

c/c++const用法總結

沒有 pan 分配 值類型 變量初始化 _id 多少 部分 參數 1、修飾常量時:   const int temp1; //temp1為常量,不可變   int const temp2; //temp2為常量,不可變 2、修飾指針時:   主要看const在*的前後,

C/C++const關鍵字的用法及其與宏定義的比較

類型安全 屬性 const關鍵字 code oid 程序 函數返回值 存儲空間 臨時對象 1.const關鍵字的性質 簡單來說:const關鍵字修飾的變量具有常屬性。 即它所修飾的變量不能被修改。 2.修飾局部變量 1 const int a = 10; 2 int co

C#const用法詳解

htm 鏈接 服務器 span img body 用法詳解 -s 設計 本文實例講述了C#中const用法。分享給大家供大家參考。具體用法分析如下: const是一個c語言的關鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性,另外,

C++ const關鍵詞用法

volatile ati 意義 屬性。 private 不可 一個 編譯器 後者 【轉載】轉自 https://www.cnblogs.com/chogen/p/4574118.html const是一個C++語言的限定符,它限定一個變量不允許被改變。使用const在一定程

C++CONST用法總結

1、修飾常量時: ? 1 2 const int temp1; //temp1為常量,不可變 int const temp2; //temp2為常量,不可變 2、修飾指標時:   主要看const在*的前後,

關於c++const的基本用法

c++中的const 有點類似於c裡的巨集定義#define,但是似乎是在巨集定義基礎上的程式碼優化,具體我解釋不清,下面主要提到的是 const 在c++中的3中基本用法: 1.指向常量的指標 例如:const char*  pc=“sada"; 含義:宣告一個名為

轉:C++const、volatile、mutable的用法

const修飾普通變數和指標 const修飾變數,一般有兩種寫法: const TYPE value; TYPE const value; 這兩種寫法在本質上是一樣的。它的含義是:const修飾的型別為TYPE的變數value是不可變的。對於一個非指標的型別T

C++const常量的用法總結

C++中const用法總結 思維方式:是什麼?為什麼?怎麼用? C++中有些什麼東西? const可以修飾些什麼? 什麼原理(誰變,誰不變)? 有什麼好處? C++中有些什麼? 資料:變數、常量(字面量) 函式(方法)、{程式碼塊} 常量: 1,0.1,’a’,”

C++const用法淺析

看到const 關鍵字,很多程式設計師想到的可能是const 常量,這可有點象踩到陷井上還不知道自己危險了。讀讀以下文字會使你對c++中的const有一個全面的認識。 const 是C++中常用的型別修飾符,有某些微妙的應用場合,如果沒有搞清本源,則錯誤在所難免。本篇中

[轉]C++const的使用

用法 non-const tint brush include 函數返回 .com pre oid 原文鏈接:http://www.cnblogs.com/xudong-bupt/p/3509567.html 平時在寫C++代碼的時候不怎麽註重const的使用,長久以來就把

預處理、const、static與sizeof-C++const有什麽作用(至少說出3個)

什麽 需要 char 修改 抽象 ons 時間 數據 amp 1:作用如下: (1)const用於定義常量:const定義的常量編譯器可以對其進行數據靜態類型安全檢查。 (2)const修飾函數形式的參數:當輸入參數為用戶自定義類型和抽象數據類型時,應該將“值傳遞”改為“c

【轉】C++const在函數名前面和函數後面的區別

const成員函數 調用 參數傳遞 成員 指向 int 區別 ... urn 一、概念   當const在函數名前面的時候修飾的是函數返回值,在函數名後面表示是常成員函數,該函數不能修改對象內的任何成員,只能發生讀操作,不能發生寫操作。 二、原理:   我們都知道在調用

C#問號的用法

變量 ring 返回 express () operator boolean per 泛型 1. 可空類型修飾符(?):   引用類型可以使用空引用表示一個不存在的值,而值類型通常不能表示為空。   例如: string str=null;是正確的。 int

C++const,static,inline的用途

ue4 dba pac use lzw fsm 強硬 oci jce G7U42mcs62卸ehttp://www.docin.com/app/user/userinfo?userid=180985862 閱惶0欠4r肝6置gw人http://docstore.docin

C#HttpWebRequest的用法詳解

網站 default 編碼方式 對數 c# toarray collect acc like 本文實例講述了C#中HttpWebRequest的用法。分享給大家供大家參考。具體如下: HttpWebRequest類主要利用HTTP 協議和服務器交互,通常是通過 GET 和

C#HashTable的用法

會有 string false border div hash 包含 tool each 首先,從命名空間開始 System.Collections 接下來進入正題.               Hashtable的常用方法和屬性:                     

C++的map用法詳解

時間 占用 sort函數 數組 例程 通道 組織 sso 查找 Map是 STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的數據 處理能力,由 於這個特性,它完成有可能在我們處理一對一數據的

【轉載】 c++static的用法詳解

ostream 並不會 style 轉載 程序員 都是 note 每次 reference 出處: http://blog.csdn.net/majianfei1023/article/details/45290467 C 語言的 static 關鍵字有三種(具體來說是

c#this的用法及作用

sys 靜態成員 mes 成員 成員方法 read 訪問 write stat 在C#中, 1. this關鍵字代表當前實例,我們可以用this.來調用當前實例的成員方法,變量,屬性,字段等; 2. 也可以用this來做為參數狀當前實例做為參