언어/C

C/C++의 const(상수)

DangDang's 2019. 4. 1. 10:47

상수(Constant)는 변수의 반대 개념이다.

변수는 상황에 따라 값을 변경할 수 있지만, 상수는 그 값을 변경할 수가 없다.

상수로 어떻게 선언을 할 수 있을까?

선언을 하는 방법은 두가지가 있다.

 

첫 번째 ->

 

#define을 통해서 선언하는 것이다.

ex) #define MAX 100

이를 매크로 상수라고 부른다.

이 부분은 컴파일러가 처리하는 것이 아니라, 전처리기기 부분에서 처리를 해준다.

그 후에컴파일을 하고 나서, MAX라고 쓰여진 부분은 100으로 바뀌게 된다.

 

아래의 그림 참고

 

두 번째 ->

const 지시자를 통해 변수를 상수화 하는 것이다.

const 지시자는 자료형의 앞에 붙을 수도 있고, 자료형의 뒤에 붙을 수도 있다.

그 차이는 포인터형 자료형에서 볼 수 있다.

 

const int * var; 이라면, var은 상수만을 가리키는 포인터가 된다.

즉, var가 가리키는 대상은 변경이 가능하지만, 가리키는 값을 변경이 불가능하다.

 

int * const var; 이라면, var은 변수를 가리키는 상수형 포인터가 된다.

즉, 포인터가 가리키는 위치는 변경 할 수 없고, 가리키는 값은 변경이 가능하다.