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

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을 참고하세요

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.