const 위치별 사용법
const의 기능은 상수화 하는 것입니다.
1. 일반 변수
일반 변수선언 시 const는 아래와 같이 2군데 위치에 올 수 있다.
이 경우 const의 위치에 따른 var에 대한 제약은 동일하 효과를 얻는다. 코딩할 때는 1번을 사용하자
1) const int var;
2) int const var;
2. pointer 변수
pointer 변수를 선언할 경우 아래와 같이 3군데에 const가 위치할 수 있다.
그런데 이렇게 되면 const의 상수화 범위가 너무 헷갈리수 있습니다. 그러나 const 원리만 알면 아래의 3가지는 쉽게 구분이 가능합니다.
원리는 const는 바로 뒤에 위치한 것만 상수화 합니다.
상수화 하는 부분은 보라색으로 표기하겠습니다.
1) const int* var_p;
자료형 int*만 상수화 하겠다는 뜻입니다.
"이 뜻은 *로 해서 접근하는 곳이 상수화 되었다. 그래서 *로 접근한 고은 수정 할 수 없다입니다."
코드를 보시면 *을 용한 *var_p의 값은 변경할 수 없습니다. 그래서* 부분이 빨간색으로 표시가 됩니다.
그러나 변수자체를 상수화 한 것이 아니기 때문에 pointer 변수(var_p)의 값은 변경 가능 합니다.
2) int* const var_p;
변수(var_p)만 상수화 하겠다는 뜻입니다.
"이 뜻은 변수는 상수화 되었으니, 변수에 다른 값을 할 당 할 수 없다입니다"
코드를 보시면 변수(var_p)를 새로운 주소 값으로 변경할 수 없습니다. 그래서 변수(var_p)가 부분이 빨간색입니다.
그러나 *을 사용하여 가리키는 값을 상수 화 한 것이 아니기 때 문에 *var_p의 값은 변경이 가능합니다.
3) const int* const var_p;
자료형 int* 와 변수(var_p) 모두를 상수화 하겠다는 뜻입니다.
이 뜻은 1번과 2번을 합친 것입니다.
"이 뜻은 *로 접근 하는 곳의 값과 변수의 값 모두 상수화 되어 변경할 수 없다입니다"
코드를 보시면 *을 사용하는 부분의 값과 , 변수(var_p)의 값 모두 변경 이 불가능합니다.
그래서 * 부분과 변수(var_p) 부분이 모두 빨간색입니다.
정리
const는 바로 뒤에오는 것만 상수화 한다.
'프로그래밍 > 코테' 카테고리의 다른 글
[코테] 코테를 위한 코드 모음 (0) | 2023.01.25 |
---|---|
[코테] 주의 사항 (0) | 2022.11.05 |
[프로그래머스] 소수 찾기Level 2 (0) | 2022.09.05 |
coding test cheat sheet (0) | 2022.08.17 |
[프로그래머스] 프린터 Lv. 2 (0) | 2022.07.18 |