const変更ポインタには3つのケースがあります
-
const変更済みポインター---定数ポインター
-
const変更定数---ポインタ定数
-
constはポインターを変更し、定数を変更します
1.const変更されたポインター---定数ポインター
constはポインターを変更し、ポインターポイントは変更でき、ポインターが指す値は変更できません。
int a = 10;
int b = 10;
//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int * p1 = &a;
p1 = &b; //正确
// *p1 = 100; // 报错
int const * a; //同上
p1は、定数ポインターと呼ばれる、int型のconstオブジェクトへのポインターです。
注:const(定数)int *(ポインター)p。constの後に*が続くため、* pは変更できませんが、pは変更できます。
2.const変更定数---ポインタ定数
constは定数を変更し、ポインターポイントは変更できず、ポインターが指す値は変更できます
int a = 10;
int b = 10;
//const修饰的是常量,指针指向不可以改,指针指向的值可以更改
int * const p2 = &a;
//p2 = &b; //错误
*p2 = 100; //正确
名前が示すように、ポインター定数は定数ですが、ポインターによって変更されます。
注:int *(ポインター)const(定数)p2。constの後にp2が続くため、p2は変更できませんが、* p2は変更できます。
3.constはポインターと定数を変更します
int a = 10;
int b = 10;
//const既修饰指针又修饰常量
const int * const p3 = &a;
//p3 = &b; //错误
//*p3 = 100; //错误
p3はconstポインターであり、int型のconstオブジェクトを指します。これは、定数への定数ポインターと呼ばれます。