c 常量(const) 使用的注意事項

2021-09-17 07:09:19 字數 1602 閱讀 1036

在我們編碼的過程 ,const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。

接下來我們一起看看常量的應用吧!

1.常量預設是靜態型別,所以不能和static一起使用

2.常量是在編譯時計算的,它的表示式中不能包含變數:

如  const  int a= b+1; 這樣編譯不能通過的

如果 const int b=1; const int a=b+1;  這樣是正確的

3.常量在編譯時已經計算複製了,在程式執行過程中 ,不允許被修改的!

4.常量當被跨程式集直接引用的時候,常量的值會被儲存到引用的程式集中,當下次該常量被修改時,只編譯常量所在的專案,引用該常量的程式集未編譯的話,則引用該常量程式集的常量值不會改變,還是之前的常量值!我們通過**來驗證一下:

在我們編碼的過程 ,const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。

接下來我們一起看看常量的應用吧!

1.常量預設是靜態型別,所以不能和static一起使用

2.常量是在編譯時計算的,它的表示式中不能包含變數:

如  const  int a= b+1; 這樣編譯不能通過的

如果 const int b=1; const int a=b+1;  這樣是正確的

3.常量在編譯時已經計算複製了,在程式執行過程中 ,不允許被修改的!

4.常量當被跨程式集直接引用的時候,常量的值會被儲存到引用的程式集中,當下次該常量被修改時,只編譯常量所在的專案,引用該常量的程式集未編譯的話,則引用該常量程式集的常量值不會改變,還是之前的常量值!我們通過**來驗證一下:

我們首先在consttest中定義乙個 test 類,其中包含乙個常量和乙個靜態變數,分別給它們初始化。

然後在控制台中引用,分別列印一下這兩個型別的值

好了,輸出的值跟我們預想的一樣吧!

接下來,我們把test的中兩個屬性值改變一下。

改變完值後,我們在最consttest編譯一下,然後把生成的.dll檔案拷貝到 控制台的exe目錄下

我們在執行一下控制台程式

咦。常量的值沒有改變,靜態變數的值改變了。

由此驗證了,當常量被跨程式集直接引用時,常量的值會存在引用程式集中。所有遇到這種情況,需要引用程式集也要編譯生成!

c 常量(const) 使用的注意事項

在我們編碼的過程 const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。接下來我們一起看看常量的應用吧!1.常量預設是靜態型別,所以不能和static一起使用 2.常量是在編譯時計算的,它的表示式中不能包含變數 如 cons...

const使用注意事項

把 讀作pointer to然後從後往前讀.int const p 可以讀作 p is a pointer to const int,p是指向常量的指標 int const p 可以讀作 p is a const pointer to int,p是指向int型的常指標,此時 p的值是可以被修改的,但...

const的注意事項

關於const 在c中是唯讀變數,可偷偷改變其值 而在c 中是常量,區域性const可以通過取位址來改變其值int p int a 因為區域性const放在棧區。typedef char pstr const char p1 a const pstr p2 a p1 正確,只是 p1不能改 p2 錯...