const int a = 5;
int b = 10;
const int* ptr_a = &a; // ptr_a 를 통한 간접첨조로 a 의 값을 수정하는게 불가능하다.
const int* ptr_b = &b; // ptr_b 를 통한 간접 참조로 b 의 값을 수정하는게 불가능하다.
// const 가 데이터 타입 앞, 맨 앞에 붙음으로써 간접참조로 값을 바꿀 수 없게 되었다. 주소값은 바꿀 수 있다.
int *ptr_a = &a; // a 는 상수이므로 a를 가리키는 포인터 또한 const int* 로 선언되어야 한다. error!
//일반 포인터에 const 포인터를 할당할 수는 없다.
int a = 5;
int b = 10;
int * ptr1;
const int * ptr2 = &a;
ptr1 = ptr2; // error!
// int * const ptr 처럼 const 가 포인터 변수 이름 앞에 붙은 경우
int a = 10;
int * const ptr = &a;
*ptr = 100; // 간접 참조로 인한 값 수정이 가능하다.
ptr = nullptr; // error!
int a = 10;
const int* const ptr = &a; // const 다 붙여버리기! 참조 수정도 안되고 주소 값 수정도 불가능하다.
ptr = nullptr; // error!
*ptr = 100; // error!