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作用 改變生命週期 或者 改變作用域 程式的區域性變數存在於 堆疊 中,全域性變數存在於 靜態區 中,...