CPP_어소_31 const 포인터

CJB_ny·2022년 6월 21일
0

CPP_AROTHO

목록 보기
29/83
post-thumbnail

포인터 변수가 바뀐다는 것은

딴놈을 가르키던지 아무것도 안 가르킨다던지 둘중 하나이다.

포인터 변수에게 상수화란?

두가지 개념이 존재한다.

  1. 내가 가르키고 있는 원본을 바꿀 것인지 말 것인지

  2. 포인터 변수 자체가 상수화가 되어서 더이상 다른 대상을 가르킬 수 없게 될 것인지

이것은 const가 붙는 위치에 따라 달라진다.

바꿀려고하면

이렇게 뜬다.

이전시간인가 l-value 배웠제?? (변수)

지금 이상태는 포인터 변수 자체가 상수화가 된게 아니다.

const 포인터

이렇게도 가능함.

이렇게하면 지금 가르키고있는 주소의 값을 바꿀 수 없다는 것이다.

포인터 const

int* const pIntConst = &a;

하게되면 이제 다른 변수의 주소를 받을 수 없다.

이렇게하면 지금 가르키고있는 주소의 값을 const화 하겠다. (주소 못바꾼다)

활용

이렇게하면 처음 가르킨것만 가르킬 수 있고 그 주소의 값을 바꿀 수도 없다.

즉, 초기화시 가르킨 대상만 가르킴, 가르키는 원본을 수정할 수 없음

이거는 뭐노?

이거는 const 포인터 이다.

위치 기준은 * 별이다.

별 기준으로 앞에있냐 뒤에있냐 이다.

a 상수화?

이렇게 하면 a = 100; 이 가능하냐?

답은 당연히 된다.

지금 이것은 *pInt = 100; 처럼 포인터 변수를 사용해서 값에 접근하는 것을 막는 것이지

a라는 변수를 상수화 시킨것이 아니다.

a랑은 무관한 것이다.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글