const在C與C 中的區別

2021-09-28 21:33:22 字數 1036 閱讀 8475

const修飾的變數稱為常變數,在編譯階段,判斷其有沒有做左值,其他用法與普通變數一樣。(普通變數存放資料在執行階段才能知道)

const修飾的變數稱為常量,也是在編譯階段,將常量出現的地方替換為相應初始化的值;

1.常量不能修改:直接與間接

2.const 修飾全域性變數是將其變為local

3.必須初始化;

4.杜絕間接訪問來修改常量記憶體的危險。

舉幾個例子

(1)

int  a=10;

int* q=&a;

int* const q=p;

/*從const向下分析:

const修飾q;

直接訪問是a,間接訪問不存在,

(因為q已經是一級指標,需要二級指標才能間接訪問)

可以成功執行。

*/

(2)

int a=10;

int *const p=&a;

int **q=&p;

/*從const向下分析:

const修飾p;

直接訪問是p,間接訪問是*q

報錯!!!!!

若想要成功執行,需要杜絕*q間接訪問的風險,所以需要在*q前加上const修飾,

即int* const *q=&p;

*/

(3)

int a=10;

int *p=&a;

const int **q=&p;

/*從const向下分析:

const修飾**q;

直接訪問是a,間接訪問是**q,*q,*p

報錯!!!!!

若想要成功執行,需要杜絕三者間接訪問的風險

(如果杜絕*q間接訪問的風險則也就杜絕了*p的風險)

所以只需要在*q前加上const修飾,即

const int* const*q=&p;

*/

const 在c和c 中的區別

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

const在C和C 中的區別

1,怎麼理解const?2,const在c和c 中的區別?const修飾的變數不能夠在作為左值,也就是說一旦被初始化後,值不可以被修改。在.c檔案中,const修飾的量,可以不用初始化,但是如果不初始化,那也就沒有機會給被修飾量進行賦值。c語言中const修飾的量不叫常量,而叫做常變數,和普通變數的...

const在C和C 中的區別

在c中,const不是常量,只能說是乙個不能改變的變數 注意是變數 c編譯器不能把const看成乙個編譯期間的常量,因為他在記憶體中有分配,c編譯器不知道他在編譯期間的值。所以不能作為陣列定義時的下標,因為它必須為常量。在c中,const int a 是可以的,因為這只是宣告乙個變數,告訴編譯器,我...