1. 程式人生 > >const int* p 和 int* const p

const int* p 和 int* const p

理清一下,順便做下記錄。

(一)const int* p



由程式可知,const int* p 中const的作用是告訴指標,指向的物件是const(但其實物件自己是不是const不清楚),不能通過指標來改變物件的值;但是指標重新指向另一個地方可以。

(二)int* const p



由程式可知,int* const p const的作用是限定p的,p的值是指向物件的地址,表示p的值是const的,不能指向其他地方了;但是可以通過*p來改變指向的物件值

區分這兩種情況,看const 後緊跟的是什麼,就是限定的什麼

const int* p中const後面是int, 表示指向的值是常量,不能通過該指標改變。

int* const p中const後面是p,表示該指標所存的地址不能變了,不能重新指向其他了。

暫時的理解就這樣,希望自己以後看的時候能懂

o(╯□╰)o

-------------------------------------------------------------------------------

2017年4月24日

引用《C專家程式設計》1.9節一段話:

const 和 * 的組合通常只用於在陣列形式的引數中模擬傳值呼叫。它聲稱“我給你一個指向它的指標,但你不能修改它。” 這個約定類似於極為常見的void*的用法,儘管在理論上它可以用於任何情形,但通常被限制於把指標從一種型別轉換為另一種型別。

-----------------------------------------------------------------------------

《Effective C++》條款三中寫道:

const語法雖然變化多端,但並不莫測高深。如果關鍵字const出現在星號左側,表示被指物是常亮;如果出現在星號右側,表示指標自身是常亮;如果出現在星號兩邊,表示被指物和指標兩者都是常亮。

如果被指物是常亮,有些程式設計師會將關鍵字const寫在型別之前,有些人會把它寫在型別之後、星號之前。兩種寫法的意義相同。