在閱讀關於指針教程,我面臨着像他們這種常量指針和整型常量指針有什麼區別?
const int *p;
和
int const *p;
和
int *const p;
請告訴我的主要區別碼?
雖然我指定的任何整數值的地址,像
int b=100;
b=&p;
我收到錯誤。這有什麼意義?有人可以用例子來解釋嗎?
在閱讀關於指針教程,我面臨着像他們這種常量指針和整型常量指針有什麼區別?
const int *p;
和
int const *p;
和
int *const p;
請告訴我的主要區別碼?
雖然我指定的任何整數值的地址,像
int b=100;
b=&p;
我收到錯誤。這有什麼意義?有人可以用例子來解釋嗎?
大多數時候,只需從右向左讀取它。
int const *p;
「p
是一個指向const
int
」。
int *const p;
「p
是const
指針到int
」。
唯一的例外是當const
是lefmost關鍵字:
const int *p;
然後,它的一樣:
int const *p;
如果指針const
,那麼你就不能修改其地址,但您可以更改其指向的值。如果指向的值是const
(在你的情況下是int
),那麼你不能修改指針指向的內容(但你可以指向其他內容)。
到無關的事,這無法編譯:
int b=100;
b=&p;
因爲你分配指針veriable(一int **
)的地址b
。這是非法轉換。你可以用演員強制它,但我不認爲這就是你想要的。
假設變量命名是一致的,'B =&P;',因爲我們正在分配指針的地址應該失敗(即指針)到一個整數,不是? –
@undur的確。男人,我一定很累,沒有看到! –
嘗試任何這些:http://stackoverflow.com/search?q=const+before+after – titaniumdecoy