포인터와 const

강형우·2022년 12월 13일
0

C++

목록 보기
7/10
post-thumbnail

const가 맨 앞에 붙어 있는 경우

int value1 = 5;
const int *ptr = &value1;
*ptr = 7; // ❌ 에러! 역참조로 값을 바꾸는것은 안된다.

int value2 = 6;
ptr = &value2; // ✔️ 하지만 포인터가 가리키고 있는 주소를 바꾸는것은 가능하다.
*ptr = 8; // ❌ 에러! 여전히 역참조로 값을 바꾸는것은 안된다.

const가 포인터 앞에 붙어 있는 경우

int value1 = 5;
int *const ptr = &value1;
cout << *ptr << endl; //✔️ 역참조 가능
*ptr = 10; //✔️ 역참조에 값을 넣는것도 가능

int value2 = 8;
ptr = &value2; //❌ 에러! 포인터의 주소값을 바꾸는것은 불가능

const가 2개 붙어 있는 경우

const int *const ptr; //❌ 에러! 포인터 자체가 상수이기 때문에 초기화가 돼야함.
const int *const ptr = &value; //✔️
*ptr = 10; //❌ 에러! 역참조로 값을 바꾸는것이 불가능
ptr = &value2; //❌ 에러! 주소값을 바꾸는것도 불가능

0개의 댓글