const int*, const int * const, int const *간의 차이는 뭔가요?


const int* const int * const int const *

이 세개는 무슨 차이가 있나요?

  • 2016년 01월 05일에 작성됨

조회수 358


1 답변


좋아요
0
싫어요
채택취소하기
  1. int* - int를 가리키는 포인터
  2. int const * - const int를 가리키는 포인터
  3. int * const - int를 가리키는 const 포인터
  4. int const * const - const int를 가리키는 const 포인터

const위치는 다음과 같이 쓸 수 있습니다

  1. const int * == int const *
  2. const int * const == int const * const

엄청 꼬아서 쓰면 이렇게도 쓸 수 있겠죠

  1. int ** - int를 가리키는 포인터를 가리키는 포인터
  2. int ** const - int를 가리키는 포인터를 가리키는 const 포인터
  3. int * const * - int를 가리키는 const포인터를 가리키는 포인터
  4. int const ** - const int를 가리키는 포인터를 가리키는 포인터
  5. int * const * const - int를 가리키는 const 포인터를 가리키는 const 포인터

예제에 같이 설명할게요

int number = 3;
int anotherNumber = 4;
const int constNumber = 5;

int* ptr0 = &number;
*ptr0 = 4; // 가능
ptr0 = &anotherNumber; //가능
ptr0 = &constNumber;//int*가 const int를 가리키는건 불가능

const int* ptr1 = &number; //가능
*ptr1 = 5; //ptr1이 const int를 가리키므로 불가능
ptr1 = &anotherNumber; //가능
ptr1 = &constNumber;//가능

int *const ptr2; //불가능. const 포인터는 선언과 동시에 초기화해줘야 합니다

int *const ptr3 = &number; //가능
*ptr3 = 6; //가능
ptr3 = &anotherNumber; //불가능 const포인터이므로 가리키는 대상을 바꿀 수 없음

자세한 건 Clockwise/Spiral Rule을 참고하세요

  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close