블로그 이미지
devtang
Instagram : @taebr0 devtaehyeong@gmail.com

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2021. 1. 10. 22:02 C++

//본 게시물은 따배씨++ 강의를 듣고 정리한 학습 노트입니다.

 

 

값을 바꿀수 없는 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
posted by devtang