const
코드를 짜다보면, 이변이 없는한 절대 바꾸지 않을 값들이 있을거에요.
사람으로치면 생일, 계좌번호같은 정보겠죠? 이런 정보는 사용자가 실수로 인해 바꾸게 되면 큰일 나니까 이를 방지하는 스킬이 있습니다.
그게 const 입니다.
이렇게 선언되면 num은 5로 고정된 것이므로, 변수가 아닌 상수가 됩니다.
이렇게 선언되면 포인터변수 ptr1을 사용해서 num1에 저장된 변수 값을 바꾸는게 불가능합니다. 아래서 예시를 들겠습니다.
이거는 ptr2 포인터변수가 상수화 된 것을 말합니다.
따라서, 포인터변수만 상수화된 것이고 num은 여전히 변수입니다.
?? 이건 되네요! 근데!
얘는 안되요.
구분하는 방법은 *의 위치입니다. *이 선언되면 뒤이어 나오는 변수들은 상수가 됩니다.
그렇기 때문에 int *const ptr1은 주소값이 상수처리가 되어서 다른 주소를 가리킬 수가 없는 것입니다.
다시 const int *ptr1 은 포인터변수가 상수화가 된 거라
기존의 *ptr1 값에서 변경이 불가능한 것입니다.