강께르의 개발일지

[C++] 포인터 변수의 const 사용에 대해 본문

프로그래밍/C++

[C++] 포인터 변수의 const 사용에 대해

강께르 2021. 6. 13. 00:11

1. const를 사용하는 포인터 변수

- 보통 const를 사용해 변수를 상수화하면 상수화된 변수의 값은 변경하지 못한다는 개념이다.

- 하지만 포인터 변수의 const 사용법은 두 가지이다. 그 방법은 다음과 같다.

 

포인터 변수가 가리키는 값을 상수화

포인터 변수가 저장하고 있는 주소값을 상수화

 

 

2. 포인터의 const 사용에 대해

 2-1. 포인터 변수가 가리키는 값을 상수화

- 포인터 변수에 저장된 주소값을 역참조해서 그 메모리 공간에 있는 값을 변경하지 못하게 하고, 오직 그 주소값의 변수를 직접 접근하여 변경이 가능하다.

- 이것이 포인터가 가리키는 값이 상수화가 된 것이다.

- 사용 방법은 포인터 변수의 자료형 앞에 const를 넣는다.

int a = 10;
const int* ptr = &a; // 이 포인터 변수로 접근하여 
// 그 주소값의 메모리 공간의 값을 변경할 수 없음.                    

*ptr = 20; // 불가능하다.
a = 30; // 가능하다

 2-2. 포인터 변수가 저장하고 있는 주소값을 상수화

- 포인터 변수에 다른 메모리 주소를 저장하지 못하도록 저장하고 있는 주소값을 변경하지 못하도록 한다.

- 포인터 변수를 통해서 메모리 공간의 값을 변경하는 것은 가능하다.

- 사용방법은 포인터 변수의 자료형과 변수 이름 사이에 const를 넣는다.

int a = 10;
int b = 20;
// 주소값을 상수화하여 다른 주소값으로 변경하지 못하도록
// 주소값의 변경을 막는다.
int* const ptr = &a;


ptr = &b; // 불가능하다
*ptr = 30; // 주소값이 아닌 역참조에 의한 값 변경이 가능

 

 

'프로그래밍 > C++' 카테고리의 다른 글

[C++] delete와 delete[]  (0) 2021.06.13
[C++] 범위 기반 for문  (0) 2021.06.13
[C++] 객체 지향 프로그래밍과 특징 정리  (0) 2021.06.10
[C++] enum과 enum class  (0) 2021.06.10
[C++] void 포인터와 함수형 포인터  (0) 2021.06.10