C++ 学習用のポインター定数と定数ポインター

序文

C++ では、ポインター定数 (定数ポインター) と定数ポインター (定数へのポインター) は、意味と用途が異なる 2 つの異なるタイプのポインターです。

文章

定数ポインタ:
ポインタ定数は、メモリ アドレスを変更できないポインタです。つまり、ポインタが別のメモリ位置を指すようにすることはできませんが、ポインタが指すメモリ位置の内容を変更することはできます。
ポインタ定数はそのポインティングが変更されないため、宣言時に初期化する必要があります。
ポインター定数は、ポインター型の前に const キーワードを使用して宣言されます。
例:

int x = 5;
int y = 10;
const int* ptr = &x; // 声明一个指向常量整数的指针常量
ptr = &y; // 合法,可以改变指向不同的整数,但不能改变指向的整数的值
(*ptr)++; // 不合法,不能修改指向的整数的值

定数ポインタ (定数へのポインタ):
定数ポインタはポインタであり、それが指すメモリ アドレスは変更できますが、それを介して指すメモリ位置の内容を変更することはできません。つまり、異なるメモリ位置を指すようにすることはできますが、それを介してそれらのメモリ位置の値を変更することはできません。
定数ポインターを宣言する場合は、ポインターが指す型の前に const キーワードを使用します。
例:

int x = 5;
int y = 10;
int* const ptr = &x; // 声明一个常量整数指针
(*ptr)++; // 合法,可以修改指向的整数的值
ptr = &y; // 不合法,不能改变指针指向的地址

違いを要約すると、次のようになります。

ポインタ定数は変更できませんが、ポイントされたメモリ位置の値は変更できます。
定数ポインタのポイントは変更できますが、ポイントされたメモリ位置の値はそれによって変更できません。
必要に応じて、適切な型を選択してポインターを宣言し、安全で正しい操作を確保します。

おすすめ

転載: blog.csdn.net/wniuniu_/article/details/132722538