關於C 與C中const關鍵字的一些整理

2021-08-18 06:38:13 字數 856 閱讀 1792

最近在學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...