강께르의 개발일지
[C++] 포인터 변수의 const 사용에 대해 본문
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 |