當const遇上了指標

2021-10-10 10:49:23 字數 1228 閱讀 5403

將指標指向常量物件,這樣可以防止使用指標來修改所指向的值

int num =6;

const

int*p =

#//*p = 8 非法,不能改變指向常量物件的值

但是,物件num本身不是常量可以被修改

num =

8//合法的

也就是說,它指向的那個值並不是常量,因此我們不能通過p來修改它指向的值但是可以修改num的值從而修改p指向的值

int t1 =1;

int t2 =2;

const

int*p1 =

&t1;

int*

const p2 =

&t2;

//p2 = &t1 非法,p2是常量指標,無法改變其指向的位址,只能指向t1

第乙個申明就是前面所說的不能修改p1來改變p1所指向位址裡的值,但可以修改原來變數的值從而達到修改p1所指向位址裡的值;第二個申明p2本身被申明為乙個常量,也就是它指向的位址不能被改變,但是可以修改它所指向位址裡值

int t1 =1;

int t2 =2;

const

int*p1 =

&t1;

//*p1+=1; 非法

cout <<

*p1 << endl;

t1++

; cout <<

*p1 << endl;

int*

const p2 =

&t2;

cout <<

*p2 << endl;

*p2 +=1

;//p2 = &t1; 非法

一開始p1指向t1,p2指向t2,p1輸出t1的值1,改變t1的值為2,再次輸出p1,仍然輸出t1的值2 ,也就是說p1位址存放的值被t1更改了;p2一開始輸出t2的值2,p2修改其位址存放的值為3,再次輸出p2得到修改後的值為3,也就是說,p2不能改變其指向但是他指向的值是可以通過自身修改的

當const遇上指標

const關鍵字 可以有很多用處,比如 define row 10 就代表row的值恒為10,不可修改。而const int row 10 也可以將值恆定,無法修改。還有 const int num 10 將陣列整個保護,無法修改。但,並不是將被保護量變為常量,而是在處理時將其看為常量,不能對其修改...

當Shell遇上了NodeJS

無論在傳統的企業級系統維護還是在網際網路運維中,shell指令碼的編寫與維護常常必不可少,在系統管理員或開發人員工作中佔比重比較大的一部分。shell指令碼的嚴格語法格式對於一般的運維人員來說,常常會在一不留神下而抓狂或查詢半天才發現是因為多了或少了乙個空格或某語包括號不匹配而導致的錯誤,不但大大的...

引用遇上const和指標

int a 1 int b 2 const int c a const int d c const int const e c d b 正確 e b 錯誤 d 3 錯誤 int f a int g f int const h f g b 正確 h b 錯誤 g 3 正確當const引用是引用的乙個指...