변수 상수화
const는 대개 변수 선언부 앞에 붙여서 수정이 불가능 하게 제한할 목적으로 사용한다. 변수가 상수화되는것이다. 한가지 예를 들어보자.
위의 코드를 컴파일 하면 에러를 발생한다. const 키워드가 붙은 변수 pi를 변경하려했기 때문이다. 이처럼 const 변수는 초기화 된 후 변경이 불가능 하며, 초기화는 반드시 선언과 함께 해주어야한다.
─────────────────────────────────────────────
포인터와 const
포인터 변수의 경우는 const키워드가 올 수 있는 위치가 두가지가 있다. 한가지는 위와같이 선언부의 맨 앞에 위치하는 거이고, 다른 한가지는 변수명 앞에 위치하는것이다.
위의 코드를 보면 3가지 선언이 있다.
상수화된 int포인터는 값을 바꿀수없다.
int*를 상수화하면 가르키는 위치를 바꿀 수없다.
첫번째 ( 상수화한다. int* 가 가르키는 변수 a를 즉! 값은 변경할 수 없다. )
두번째 ( int* 를 상수화 한다. 즉! int* p2 가 지니는 주소값을 변경할 수 없다. )
세번째 (첫번째,두번째의 중첩 즉! 값도, 지니는 주소값도 변경할수 없게된다.)
//error 구문을 자세히 보면된다.
포인터가 가리키는 변수의 상수화 후 포인터 변수 대입연산이 가능할까?
[코드]
결과는 불가능
[결과]
중요한건 왜 사용하냐 인데
변경되지 않아야 하는 변수가 있다고 하고, 나는 알고있지만, 다른 사람이 코드수정시 그변수를 조작한다고 본다면 이건 분명 큰 실수 이다. 변수를 조작한다고 해서 프로그램 에러가 나지 않는게 큰 문제다. 값이 변하면 프로그램은 어떻게 될지는 모르는 일이다.
예를 들어 원의 넓이 구하는 프로그램이 있다.
원의 넓이는 3.14라는 파이값은 변하지 않는다. 이값은 const 키워드를 통해 상수화 시킨다.
이값이 const키워드 없이 변경이 된다면 원의 넓이 구하는 프로그램은 에러가 안난다고
잘 실행되는것인가?
const 키워드는 많은 개발자들이 중요성을 인식 못하지만, 습관화 하는것이 좋다.
적절히 잘 사용해 보자.
'0x0001 > C, C++' 카테고리의 다른 글
[C언어] 함수 포인터, void형 포인터 (0) | 2019.02.07 |
---|---|
[C언어] 다차원 배열, 다중 포인터 (0) | 2019.02.07 |
[C언어] extern "C" (0) | 2019.02.07 |
[C언어] 재귀적 함수, 가변인자 함수 (0) | 2019.02.07 |
[C언어] 파일 입출력, 매크로 (0) | 2019.02.07 |