定数ポインタと定数オブジェクトへのポインタについて説明する前に、まずポインタとは何かを明確にする必要があります。
ポインタ
ポインタはデータオブジェクトまたは関数への参照です。ポインタはオブジェクトまたは関数
のアドレスとタイプを表します。
宣言されたポインタ(名前)もオブジェクトです。
int var = 8848;
int* ptr = &var;
ptrは、変数varへのintポインタです。
定数ポインタと定数オブジェクトへのポインタ
定数ポインタ
定数ポインタを定義する場合、その値は後で変更できないため、ポインタを初期化する必要があります。
int var = 8848;
int var_c = 8086;
int* const ptr = &var;
*ptr = 1024; //OK
ptr = &var_c; // Error: assignment of read-only variable 'ptr'.
// prt被const修饰,是一个常量指针,是只读的
3行目のconstの後には、ポインターptrが続きます。このconstは、ptrが定数ポインターであることを示して、ptrのオブジェクトを変更します。
定数オブジェクトへのポインタ
int var = 8848;
int var_c = 8086;
int const * ptr; // 与下一行是等价的
const int* ptr; // 与上一行是等价的
ptr = &var_c; // OK
*ptr = 1024; // Error
上記の例のconst修飾子は* ptrであるため、* prtは読み取り専用です。ただし、ptrはポインタオブジェクトであり、ptrは定数ではありません。
概要
定数ポインター(オブジェクトへの定数ポインター)。ポインター自体が定数であることを強調します。
定数オブジェクトへのポインター。ポインターが指すオブジェクトが定数であることを強調します。
もちろん、定数オブジェクトへの定数ポインターもあります(const int * const prt =&var;)