상수 포인터와 상수 객체에 대한 포인터를 논의하기 전에 먼저 포인터가 무엇인지 명확히해야합니다.
바늘
포인터는 데이터 오브젝트 또는 기능에 대한 참조이다
포인터를 나타내는 주소 및 유형 객체 나 함수를 상기가
포인터 (이름)도이다 선언 개체 .
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修饰,是一个常量指针,是只读的
세 번째 줄의 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;)