-
[C++] const 위치에 따른 포인터의 의미C++ 2019. 7. 18. 11:53
포인터는 값을 변경하는 방식이 두가지가 있다.
1. 역참조를 통해 주소가 가리키고 있는 값을 변경
2. 포인터가 가리키는 주소를 변경
그렇기 때문에 각각에 대해서 const를 선언할 수 있는데, const의 위치에 따라 그 의미가 달라진다.
자료형 앞에 const 키워드가 붙는 경우
(상수를 가리키는 포인터 혹은 포인터가 가리키는 변수의 상수화라고 하기도 한다.)
1234567891011121314#include <iostream>using namespace std;int main(){int value1 = 5;const int* ptr = &value1;int value2 = 6;ptr = &value2;// *ptr = 6; 불가능}cs 이렇게 선언된 포인터는 가리키는 주소 값을 변경하는 것은 가능하지만, 역참조를 통해 값을 직접 바꾸는 것은 불가능 하다.
자료형 뒤에 const 키워드가 붙는 경우
(상수 포인터라고 하기도 한다.)
12345678910111213#include <iostream>using namespace std;int main(){int value1 = 5;int* const ptr = &value1;int value2 = 6;//ptr = &value2; 불가능*ptr = 6;}cs 이렇게 선언된 포인터는 역참조를 통해 값을 바꾸는 것은 가능하지만, 주소 값을 변경하는 것은 불가능하다.
자료형의 앞뒤에 const 키워드가 붙는 경우
12345678910111213#include <iostream>using namespace std;int main(){int value1 = 5;const int* const ptr = &value1;int value2 = 6;// *ptr = 6; 불가능// ptr = &value2; 불가능}cs 이렇게 선언된 포인터는 역참조를 통한 값 변경, 주소 값 변경 둘 다 불가능하다.
참고자료
https://www.inflearn.com/course/following-c-plus/dashboard (인프런, 홍정모의 따라배우는 C++)
'C++' 카테고리의 다른 글
[C++] this 포인터 (0) 2019.08.29 [C++] 함수 포인터 (0) 2019.08.27 [C++] Tuple (복수의 값 반환) (1) 2019.08.22 [C++] 참조 변수(Reference variable) (0) 2019.07.18 [C++] 메모리와 동적할당(new, delete) (0) 2019.07.17