定数ポインタと定数へのポインタ [重複] 質問する

定数ポインタと定数へのポインタ [重複] 質問する

違いを知りたい

const int* ptr;

そして

int * const ptr; 

そしてそれがどのように機能するか。

これを理解したり覚えておくのはかなり難しいです。助けてください。

ベストアンサー1

const int* ptr; 

ptrへのポインタを宣言します。自身を変更することはできますが、 が指すオブジェクトは変更できません。const intptrptr

const int a = 10;
const int* ptr = &a;  
*ptr = 5; // wrong
ptr++;    // right  

その間

int * const ptr;  

型へのポインタptrを宣言します。変更は許可されていませんが、 が指すオブジェクトは変更できます。constintptrptr

int a = 10;
int *const ptr = &a;  
*ptr = 5; // right
ptr++;    // wrong

一般的に、私は次のような宣言を好みます。これは読みやすく理解しやすいです (右から左に読みます)。

int const  *ptr; // ptr is a pointer to constant int 
int *const ptr;  // ptr is a constant pointer to int

おすすめ記事