const는 변수를 상수화 하기 위한 선언이다. 포인터 변수에도 const 선언이 가능하다.

#include <stdio.h>

int main(void)
{
    int num = 20;
    const int * ptr = &num;
    // *ptr = 30;   // 컴파일 에러
    num = 30;

    printf("test\n");
    return 0;
}

위 코드와 같이 const 선언한 포인터 변수가 가리키는 변수에 저장된 값을 변경하는 것은 허용되지 않는다. 그러나 num변수로 직접 값을 변경하는 것은 가능하다. 

다음 코드와 같이 const 선언은 포인터 변수의 이름 앞에 올 수 도 있다.

int * const ptr = &num;

위와 같이 변수 이름 앞에 const 선언을 했을 경우에는 주소 값의 변경이 불가능하다. 한 번 가리키기 시작한 변수를 끝까지 가리켜야 한다는 것이다. 가리키는 다음과 같이 가리키는 대상에 대한 저장된 값의 변경은 가능하다.

*ptr = 30;

다음과 같이 const선언을 하게 되면 주소값의 변경과, 가리키는 대상이 저장된 값 모두 변경이 불가능하다.

const int * const ptr = &num;

 

'Language > C, C++' 카테고리의 다른 글

[C] 3차원 배열  (0) 2020.12.26
[C] 2차원 배열  (0) 2020.12.24
[C] Call - by - value, Call - by - reference  (0) 2020.12.20
[C] 함수 인자로 배열 전달  (0) 2020.12.20
[C] 포인터 배열  (0) 2020.12.19

C에서 상수를 만들때는 const 키워드를 사용할 수 있다. const 상수를 만드는 방법은 변수 선언시 const 선언만 추가하면 된다.

int main(void){
    const int MAX = 100;
    cosnt double PI = 3.14;
}

상수는 선언과 동시에 초기화를 해야하고, 그 값을 이후에 변경시킬 수 없다. 만약 상수를 선언만 하고 초기화하지 않는다면 쓰레기 값으로 초기화 된다. 

상수를 선언할 때는 대문자로 하는것이 관례라고 한다.

 

'Language > C, C++' 카테고리의 다른 글

[C] while  (0) 2020.11.27
[C] 자료형 변환  (0) 2020.11.27
[C] 문자 표현  (0) 2020.11.25
[C] unsigned  (0) 2020.11.25
[C] 자료형  (0) 2020.11.25

+ Recent posts