const 선언의 핵심 : 값을 변경하는 방법에 제한을 둔다.
이것은 엄밀히 말해 무엇인가를 상수로 만드는 것과는 다르다.
1. const int* ptr=#
포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언
해당 const 선언의 위치는 맨 앞부분이다.
의미 : 포인터 변수 ptr을 이용해서 ptr이 가리키는 변수에 저장된 값을 변경하는 것을 허용하지 않는다.
2. int* const ptr=#
포인터 변수의 상수화
포인터 변수 ptr은 상수가 된다.
이는 한번 주소값이 저장되면 그 값의 변경이 불가능하다. 즉, 한번 가리키기 시작한 변수를 끝까지 가리켜야 한다.
물론 ptr이 상수일 뿐이니 *ptr=40;과 같이 ptr이 가리키는 대상에 저장된 값을 변경하는 연산은 문제가 되지 않는다.
3. const int* const ptr=#
1) 맨 앞의 const로 인해 *ptr=20; 불가능해진다. // 컴파일 에러
2) 포인터 변수 ptr 앞의 const 선언으로 인해 ptr=&age; 불가능해진다. // 컴파일 에러
'2023 > C' 카테고리의 다른 글
포인터와 배열, 포인터 연산 (0) | 2023.10.08 |
---|---|
배열 기반의 문자열 표현 (0) | 2023.10.08 |