最近在學c++中遇到c語言中的const關鍵字,但大牛告訴我說此const非彼const;
聽得我有點雲裡霧裡的,就決定自己網上搜一下把一些自己的理解記錄下來:
簡單來說,c++中的const更像是c的增強版。
1.c語言中的const非真正意義上的常量:
舉個簡單的例子
#include
#include
int main()
你把它用c編譯器處理下,輸出:
a = 20 *p = 20
看似不可修改的常量a卻能通過指標間接修改它的值
可同樣的**,用c++編譯器處理後,你會發現:
a = 10 *p = 20
究其原因:
當c++編譯器檢索到const常量宣告時,它並不會像c編譯器一樣馬上去給他分配記憶體,而是
會把它放在乙個符號表中(類似於python中的字典的東西,乙個key對應乙個鍵值)
當直接使用a的時候,在符號表中直接取出它的鍵值進行下一步操作;
2. c++中const 有替換#define的作用,但它的能力優於#define
2.1 先舉個替換#define的例子:
int main()
這個**在c++編譯器中是可以通過的,a與b相當於做了一次文字替換
2.2下面就說說它與#define的不同之處:
const定義的變數是由編譯器處理的,提供型別檢查和作用域檢查;
const 和#define的處理時間也不相同:#define是編譯預處理,而
const則是在編譯的時候來決定是否分配記憶體
void fun1()
void fun2()
int main()
C中const關鍵字
const 用法 定義常量,修飾指標 函式的輸入引數和返回值,把定義或者修飾的變數屬性設為唯讀。本質上它只是在全域性資料段或者棧中定義的是乙個唯讀的常量,不是真正位於字串常量區。所以關鍵字const 並不能把變數變成真正的常量,事實上還是可以改變 const 定義的變數的值。const 的目的是為了...
C 中const關鍵字
一 const修飾指標變數 int num 0 1.const在 前面,表示const修飾指標指向的內容 const int p intconst p 2.const在 後面,表示const修飾指標變數 int const p 二 const修飾成員函式首先來看一下普通成員函式 class a fu...
C 中」const「關鍵字
關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 丶const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a...