6月 11, 2010

const 與 pointer 間的關係

底下幾個狀況描述 const 與 pointer 間位置擺放所代表不同的意義:

(1) const int *ptr
宣告一個 pointer 指向 const int,所以無法藉由指標更改變數值
const int foo = 5;
int *ptr = &foo;
*ptr = 10; /* 這是錯的 */
(2) int const *ptr
情況同上,宣告 pointer 指向 const int。

(3) int* const ptr
在這個用法中,const 用來描述 ptr 變數,所以是宣告一個 const pointer,表示 pointer 初始時就決定要指向誰,之後不能再更改。
int foo, bar;
int* const ptr = &foo; /* ptr 指向 foo 從一而終,不能再更改 */
ptr = &bar; /* 這是錯的 */

沒有留言:

張貼留言