違いを知りたい
const int* ptr;
そして
int * const ptr;
そしてそれがどのように機能するか。
これを理解したり覚えておくのはかなり難しいです。助けてください。
ベストアンサー1
const int* ptr;
型ptr
へのポインタを宣言します。自身を変更することはできますが、 が指すオブジェクトは変更できません。const int
ptr
ptr
const int a = 10;
const int* ptr = &a;
*ptr = 5; // wrong
ptr++; // right
その間
int * const ptr;
型へのポインタptr
を宣言します。変更は許可されていませんが、 が指すオブジェクトは変更できます。const
int
ptr
ptr
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