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

조회수 11987회

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)