C 和C語言中const關鍵字的區別

2021-10-09 04:20:43 字數 1009 閱讀 9252

c++和c語言中const關鍵字的區別

**1. 記憶體讀取的區別

先來看下面的**

const

int m =10;

int n = m;

c++中的const關鍵字更像是編譯階段的#define。

在c語言中,編譯器會先到 m 所在的記憶體取出乙份資料,再將這份資料賦給 n;而在c++中,編譯器會直接將 10 賦給 m,沒有讀取記憶體的過程,和int n = 10;的效果一樣。c++ 中的常量更類似於#define命令,是乙個值替換的過程,只不過#define是在預處理階段替換,而常量是在編譯階段替換.

c++ 對 const 的處理少了讀取記憶體的過程,優點是提高了程式執行效率,缺點是不能反映記憶體的變化,一旦 const 變數被修改,c++ 就不能取得最新的值。

**驗證:

先來看c中的例子

1 #include 

2int

main

(void)3

這段**輸出的結果是 n=100,*p = 100

再看c++中的例子:

1 #include 

2using

namespace std;

3int

main

(void

)

這段**輸出的結果是10 100

本例想說明的是:

c語言對 const 的處理和普通變數一樣,會到記憶體中讀取資料;c++ 對 const 的處理更像是編譯時期的#define,是乙個值替換的過程。

2 作用域的區別

** c++中全域性 const 變數的可見範圍是當前檔案 而在c語言中,const 變數和普通變數一樣,在其他原始檔中也是可見的**

由於 c++ 中全域性 const 變數的可見範圍僅限於當前原始檔,所以可以將它放在標頭檔案中,這樣即使標頭檔案被包含多次也不會出錯。

C語言中const關鍵字

c語言中const關鍵字是constant的縮寫,翻譯為常量,常數的意思,主要作用如下 c語言中使用const修飾變數,主要是對變數宣告為唯讀特性,並保護變數以防止被修改。例如 const i 5 變數i只具有唯讀特性,不能夠被更改,若想重新對i進行賦值,如i 10 是不可行的。c語言中const還...

C語言中Static和Const關鍵字的的作用

static作用 改變生命週期 或者 改變作用域 程式的區域性變數存在於 堆疊 中,全域性變數存在於 靜態區 中,動態申請資料存在於 堆 中。1.作用於變數 用static宣告區域性變數 區域性變數指在 塊 內部定義的變數,只在 塊內部有效 作用域 其預設的儲存方式是自動變數或說是動態儲存的,即指令...

C語言中Static和Const關鍵字的的作用

c語言中static和const關鍵字的的作用 const與 define區別 const常量有資料型別,巨集沒有資料型別 編譯器可以對const進行型別安全檢查,對後者只進行字元替換 static作用 改變生命週期 或者 改變作用域 程式的區域性變數存在於 堆疊 中,全域性變數存在於 靜態區 中,...