指標和const限定符

2021-06-22 10:49:03 字數 1263 閱讀 6095

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 void *型別的指標儲存const物件的位址

const int universe = 42;

const void *cpv = &universe;    //ok:cpv is const

void *pv = &universe;        //error:universe is const

允許把非const物件的位址賦給指向const物件的指標

double dval = 3.14;          //dval is a double;its value can be changed

const double *cptr = &dval;      //ok:but can't change dval through cptr

儘管dval不是const物件,但任何企圖通過指標cptr修改其值的行為都會導致編譯時的錯誤。

2、const指標

3、指向const物件的const指標

4、指標和typedef

typedef string *pstring;

const pstring cstr;

宣告const pstring時,const修飾的是pstring的型別,這是乙個指標。因此,該宣告語句應該是把cstr定義為指向string型別物件的const指標,這個定義等價於string *const cstr;    //equivalent to const pstring cstr

用typedef寫const型別定義時,const限定符加在型別名前面容易引起對所定義的真正型別的誤解:

string s;

typedef string *pstring;

const pstring cstr1 = &s;    //written this way the type is obscured

pstring const cstr2 = &s;    //all three decreations are the same type

string *const cstr3 = &s;    //they're all const pointers to string

指標和const限定符

const int p 1,表示p指向乙個整型變數,並且該變數為const的。2,可以更改p的值,不可以更改它所指向物件的值。3,它可以指向非const型別的int變數 int const p 1,表示p指向乙個整型變數,該變數為非const的 2,不可以更改p的值,一旦初始化不可更改,單可以更改它...

指標和const限定符

一 指向const物件的指標 1 定義格式 const 型別 指標名 const放在型別名的前面,它是用來限定物件的型別的,即物件的型別是 const 型別 2 由於物件是const型別,在定義的時候進行了初始化之後就不能被修改,所以通過指向const物件的指標修改物件的值是錯誤的。3 把乙個con...

指標和const限定符搭配

指標和const搭配不同,對所操作的物件能進行的操作也不同,從組合上看,無非有三種組合 其中type可為int char等基本資料型別,也可為構造資料型別 1 const type ptr 我們稱此種組合叫指向const物件的指標 linux核心中有很多函式引數就是此種型別,比如 void memc...