指標和const搭配不同,對所操作的物件能進行的操作也不同,從組合上看,無非有三種組合:
其中type可為int、char等基本資料型別,也可為構造資料型別
1、const type *ptr:我們稱此種組合叫指向const物件的指標
linux核心中有很多函式引數就是此種型別,比如
void *memcpy(void *__dest, __const void *__src, size_t __n)
大家可以看到,第二個引數就是用const來修飾的,作用就是在函式內部,不能修改const所修飾的指標的內容,但是入參可以傳入任何物件。
總之一句話,可以修改指向const物件的指標指向不同的物件,但是不能修改其內容。
2、type *const ptr,也可以是type const *ptr:我們稱此種組合為const指標,需要注意的是定義此種指標需要在定義時進行初始化。
一句話總結此種指標的特性:可以修改其指向的物件的值,但是不能修改其所指的物件,也就是說一旦這個指標指向了乙個物件,那麼他將始終指向這乙個物件,不能再將其指向其他物件。
int temp = 5;
int temp2 = 6;
int *const ptr = &temp; // ok,定義時初始化
ptr = &temp2; //error,不能修改其指向的物件
*ptr = 100; //ok,可以修改其指向物件的值
3、const type *const ptr:我們稱此組合為指向const物件的const指標,他兼有以上兩種組合的特性:一旦定義了這個指標指向某個物件,將永遠不能再讓其指向其他物件,同時也不能修改其所指向物件的內容。
指標和const限定符
const int p 1,表示p指向乙個整型變數,並且該變數為const的。2,可以更改p的值,不可以更改它所指向物件的值。3,它可以指向非const型別的int變數 int const p 1,表示p指向乙個整型變數,該變數為非const的 2,不可以更改p的值,一旦初始化不可更改,單可以更改它...
指標和const限定符
1 指向const物件的指標 const double pi 3.14 double ptr error ptr is a plain pointer const double cptr ok cptr is a pointer to const 不能用void 指標儲存const物件的位址,而必須...
指標和const限定符
一 指向const物件的指標 1 定義格式 const 型別 指標名 const放在型別名的前面,它是用來限定物件的型別的,即物件的型別是 const 型別 2 由於物件是const型別,在定義的時候進行了初始化之後就不能被修改,所以通過指向const物件的指標修改物件的值是錯誤的。3 把乙個con...