블로그

const int * vs int * const

게시 1분

우선 int *ptr = &num과 같이 포인터변수를 선언하면
int *ptr = (int) ptr 임을 알아야한다.
예를들어 int
p, q;과 같이 선언하면 p는 int형을 담는 포인터변수고, q는 int형이다.

  1. const int *

const int *ptr 은 (const int) *ptr과 의미적으로 같다. 즉,

ptr 포인터 변수는 const int 타입의 변수의 주소를 저장한다.

때문에
const int a = 6;
int *p = &a;
의 결과는 ERROR다.
p는 int형변수를 담는 포인터변수지, const int형을 담는 포인터변수가 아니다.

그래서
const int *p = &a;
이렇게 선언해야 정상적으로 작동한다.

  1. int *const

int *const ptr 은 int (*const ptr) 과 의미적으로 같다.

int형 포인터를 담는 const형 포인터다.

즉 주소값의 내용은 바꿀 수 있지만 주소값을 바꿀수는 없다.

p = &a;
int num = 5;
p = #은 불가능하지만
*p = 8; 은 가능하다.

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub