首先,c和c++在大體結構上不同,卻在語法上相同。 所以在使用的時候,我們會時常遇到一些莫名其妙的問題,覺得語法上是正確的,但是編譯的時候卻出現乙個紅色的 error! 比如今天我遇到的這個有意思的問題。
1. 今天看到一段**,覺得很有意思:
1但是,我們再看看,這個兩個**:#pragma warning(disable : 4090)
23 #include4
5int main(int argv, char
args )
1 #include23using
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 }
![](https://pic.w3help.cc/379/25358238ecdf4b859cf9bc900d1df.jpeg)
當然對於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...