C const關鍵字的例項用法

2022-09-29 16:06:14 字數 1227 閱讀 4205

c++中的const更像編譯階段的#define

const int m = 10;

int n = m;

變數程式設計客棧是要占用記憶體的,即使被const修飾也不例外。m,n兩個變數占用不同的記憶體,int n = m;表示將m的值賦給n。

c++中的const

const變數禁止被修改 --- 只是語法層面上的限制,通過指標仍然可以修改。

#include

int main()

//以c語言的方式編譯,執行結果是99

//以c++的方式編譯,執行結果是10

//在c語言中,輸出n時會到記憶體中獲取n的值,這個時候n所在的記憶體中的資料已經被修改成了99

//在c++中,print("%d\n", n);語句在編譯時就將n的值替換成了10,不管n所在記憶體如何變化,都不影響輸出結果。

c++中全域性const變數的可見範圍是當前檔案

普通全域性變數的作用域是當前檔案,但是在其他檔案中也是可見的,使用extern宣告後就可以使用。

/*原始檔1*/

#include

#include"func.cpp"

int n = 10;

void func();

int main()

/*原始檔2*/

#include

extern int;

void func();

/*執行結果:*/

module:10

main:10

//程式設計客棧在c語言中,const變數和普通變數一樣,在其他原始檔中也是可見的。

const int n = 10;

//在c語言中的const變數在多檔案編譯時的表現和普通變數一樣,除了不能修改,沒有其他區別。

//在c++中,修改後的**是錯誤的。

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

總結:c++中的const變數雖然也會占用記憶體,也能使用&獲取它的位址,但是使用時卻更像編譯時期的#define;

#define也是值替換,可見範圍也是當前檔案;

#define定義的常量僅僅是字串的替換,不會進行型別檢查,

而const定義的常量是有型別的,編譯器會進行型別檢查。

知識點補充:

const修飾函式引數

const修飾引數是為了防止函式體內可能會修改引數原始物件。因此,有三種情況可討論:

C const關鍵字用法

const關鍵字是c 新引進的關鍵字,目標是用於定義常量,避免c語言中使用巨集定義出現的邊際問題,並且const是型別安全的,即const定義的是不可修改值的變數,它是有型別的,但是巨集替換只是簡單的進行字串的替換,容易出現邊際問題,造成錯誤。但是const的用法並不僅僅在此,因此整理一下,加深理解...

C const關鍵字用法

const關鍵字是c 新引進的關鍵字,目標是用於定義常量,避免c語言中使用巨集定義出現的邊際問題,並且const是型別安全的,即const定義的是不可修改值的變數,它是有型別的,但是巨集替換只是簡單的進行字串的替換,容易出現邊際問題,造成錯誤。但是const的用法並不僅僅在此,因此整理一下,加深理解...

c 《const關鍵字的用法》

一直以來都沒有總結const修飾符的用法,總是感覺const的用法太多,要記住的情況太多,不能夠掌握所有的情況,所以總是不了了之。但是如果沒有徹底掌握const用法的話,心裡總是感覺知識還欠缺很多,還要很多知識點沒有掌握。如果自己真正的總結完之後,其實也只有這麼多用法。修飾資料變數,保證資料變數只能...