본문 바로가기

2023/C

포인터 대상의 const 선언

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