09. const 포인터

Yongs12 ㅣ 2023. 5. 31. 01:49

Const 키워드를 포인터에 사용 시 위치에 따라 변경할 수 있는 제한이 달라진다.

#include <stdio.h>

int main(void)
{   
    int a = 0;
    int b = 0;

    // cosnt 포인터
    // 포인터가 가리키는 원본이 상수화
    // 가리키는 주소를 변경할 수 있다.
    // 원본 값을 수정할 수 없다.
    const int* pConstInt = &a;
    pConstInt = &b;
    
    // 포인터 const
    // 포인터 변수를 상수화
    // 가리키는 주소를 변경할 수 없다.
    // 원본 값을 수정할 수 있다.
    int* const pIntConst = &a;
    *pIntConst = 400;

    // 모두다 const화 시킬 수 있다.
    // 초기화 시 가리킨 대상만 가리키고 원본 또한 수정 할 수 없다.
    const int* const pConstIntConst = nullptr;

    // const 수식의 기준을 * 로 잡자
    // * 앞에 있으면 포인터를 수식 뒤에 있으면 변수를 수식
    int const* p = &a; // => const 포인터와 같다.

    {
        // 원본 a 가 상수가 된게 아니고
        // const 포인터 변수의 기능에 제한을 두는 것을 헷갈리지 말자.
        int a = 0;
        const int* pInt = &a;
        
        // 원본 자체는 값을 바꿀 수 있다.
        a = 100;    
    }


    return 0;
}

'C, C++' 카테고리의 다른 글

11. C언어 메모리 동적 할당  (0) 2023.06.01
10. void 포인터  (0) 2023.05.31
08. const 상수화  (0) 2023.05.30
07. 포인터  (0) 2023.05.30
06. 함수  (0) 2023.05.28