C和C 中的const區別

2021-07-03 23:22:07 字數 815 閱讀 2283

合理的利用const 有以下優點:

1: 指標做函式引數,可以有效提高**的可讀性,減少bug

2:清楚分清引數的輸入和輸出特性。

而c語言中的const,並不是真正的const,可以通過指標,間接修改const變數的值

例如:

const int a = 10;

int *p = null;

p = (int*)&a;

*p = 20;//間接賦值

printf("a= %d \n",a);

列印出來結果是 20  

而c++中的const是個真正的常量。同樣的上述**:

const int a = 10;

int *p = null;

p = (int*)&a; //對變數取位址,單獨開闢乙個記憶體空間

*p = 20;

printf("a= %d \n", a);

在c++中,當碰見常量時,c++編譯器是把常量和值放入

符號表中,建立鍵值對,如上面的

key    value

a          10

如果在編譯過程中發現對const使用了extern 或者  & 位址操作符,則給對應的常量分配單獨的儲存空間,(並且是在編譯期間分配記憶體空間),

但不會使用其儲存空間的值。

所以輸出結果依然是  10 。

而且c++中的const常量有資料型別,編譯器可以對其進行型別安全檢查和作用域檢查。有些整合化的除錯工具可以對const常量進行除錯,但

不能對巨集常量進行除錯。

C和C 中const的區別

原文出自 一.c語言中的const const是c語言中保留的乙個關鍵字,它用來限定乙個變數是唯讀的,即不可變的。程式中使用const可以在一定程度上提高程式的健壯性,但是程式中使用過多的const,可能在對 的閱讀時增加一定的難度。1 用const修飾一般變數 注意在c語言中,用const修飾的變...

C 中的const 和C中的區別

c 中的const 一 和c中的區別 c 中的const正常情況下是看成編譯期的常量,編譯器並不為const分配空間,只是在編譯的時候將期值儲存在名字表中,並在適當的時候折合在 中.所以,以下 include using namespace std int main for int i 0 i si...

const 在c和c 中的區別

c 中的const正常情況下是看成編譯期的常量,編譯器並不為const分配空間,只是在編譯的時候將期值儲存在名字表中,並在適當的時候折合在 中.所以,以下 include using namespace std int main for int i 0 i sizeof array sizeof a...