C與C 在const用法上的區別

2021-09-06 22:09:27 字數 1320 閱讀 1645

首先,c和c++在大體結構上不同,卻在語法上相同。  所以在使用的時候,我們會時常遇到一些莫名其妙的問題,覺得語法上是正確的,但是編譯的時候卻出現乙個紅色的 error! 比如今天我遇到的這個有意思的問題。

1. 今天看到一段**,覺得很有意思:

1

#pragma warning(disable : 4090)

23 #include4

5int main(int argv, char

args )

但是,我們再看看,這個兩個**:

1 #include2

3using

namespace

std;45

int main(int args , char

argv)

22getchar();

23return0;

24 }

1 #include2

3using

namespace

std;45

int main(int args , char

argv)

23getchar();

24return0;

25 }

結果為:

當然對於c++為何會出現指標的值為*p=3而var=10這樣的情況,其實,*p所指的常量位址真實的記憶體已經修改了,但是編譯器並沒有從記憶體位址中取值,而是直接從暫存器中取的值,所以var=10依舊表面上依舊沒有發生什麼改變!

2.   那麼,對於指標而言呢? const 用到指標就會發揮大作用,可以設定許可權,比如  int const * p   /  const int *p (這兩個其實可以看做是同乙個型別)均為常量指標, 還有 int * const p 指標常量,還有const int  * const p  ;

根據它們的特性  許可權如下:

int  const *p        -----只能讀,不能寫,既然是指向常量的指標,當然是可以指向其他常量的。

int  *  const p     -----能讀也能寫,但是既然是指標常量, 當然是不能指向其他位址,無法修改其他位址的值。

int const * const p    ----能讀不能寫,而且無法指向其他位址的值。

這樣就可以設定許可權,對於系統而言,這個是很安全而且很妥當的,還很power ! 當然還可以運用到指標函式什麼的 ! 這樣const其實作用還是很有用初 的!  特別是用在對安全要求很高的系統,比如銀行的系統什麼的 

const在C與C 中的區別

const修飾的變數稱為常變數,在編譯階段,判斷其有沒有做左值,其他用法與普通變數一樣。普通變數存放資料在執行階段才能知道 const修飾的變數稱為常量,也是在編譯階段,將常量出現的地方替換為相應初始化的值 1.常量不能修改 直接與間接 2.const 修飾全域性變數是將其變為local 3.必須初...

const在c 中的用法與意義

在標準c 中,這樣定義的是乙個常量,用來修飾內建型別變數,自定義物件,成員函式,返回值,函式引數。const使用 型別 1 用於指標的兩種情況 const是乙個左結合的型別修飾符.int const a a可變,a不可變 int const a a不可變,a可變 2 限定函式的傳遞值引數 void ...

const在c中的用法

常量和變數的樣子完全一樣,只是常量的值不允許被修改。我們用const這個關鍵字來宣告乙個常量。例 const int a 10 int const a 10 兩種方式都可以宣告乙個常量效果是一樣的。我們也可以用const來修飾指標 const與識別符號 例 define num 20 const i...