//본 게시물은 따배씨++ 강의를 듣고 정리한 학습 노트입니다.
값을 바꿀수 없는 const int value를 선언하고 마찬가지로 const int *ptr변수에 value의 주소값을 저장한다.
포인터를 통해서도 const int value 변수의 값을 수정할 수가 없다.
마찬가지로 int value가선언이되었어도 const int *ptr은 저장된 주소의 변수의 값을 바꾸지 않겠다고 생각하면 될거같다.
위의 코드를 보면 const int *ptr은 다른 주소값을 받을수 있다.
ptr이라는 포인터 변수가 가리키는 주소에 있는 값을 바꾸지 않겠다 라는 것이다.
하지만 포인터 변수가 가리키는 주소 자체를 바꿔버리면 새로운 값을 가질 수 있게된다.
const로인해 포인터 변수가 가진 주소를 직접 참조해 값을 바꿀 수는 없어도
저장하는 주소자체를 새로 바꿀 수가 있다.
위와 같이 int *const ptr을 선언하게되면 저장되있는 주소의 내부 값을 변경시킬수 있다.
주소값 자체를 바꿔버릴 수 있어도 주소가 가리키는 곳에 저장된 값을 바꿀 수 없었는데,
이번에는 역참조로 값을 바꿀 수 있지만, 주소값 자체를 새로 바꾸는 것이 안되는 상황이다.
이것은 주소값을 저장하는 역할에 const 가 적용이 된 것이다.
만약 const int *const ptr의 경우라면 저장된 주소값의 변경도 불가능하고, 주소를 참조하여 값을 바꾸는 것도 불가능하다.
위의 방식들을 사용할 때는 함수 파라미터로 array를 집어넣을 때, 값과 주소값을 바꾸지 않을 때 필요하다.
'C++' 카테고리의 다른 글
[C++] 스택과 힙 (0) | 2021.01.11 |
---|---|
[C++] 이중포인터와 동적 이차원 배열 생성 예제 (0) | 2021.01.10 |
[C++] 포인터의 기본 (0) | 2021.01.10 |