Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++에서 널 포인터에 주소 0이 사용되는 이유는 무엇일까?

널 포인터(null pointer)란 유효한 메모리 위치를 전혀 가리키지 않는 포인터를 의미합니다. C와 C++에서는 이러한 널 포인터를 표현하기 위해 일반적으로 주소 값 0이 사용됩니다.

널 포인터의 주요 용도

  • 포인터 초기화: 포인터 변수에 아직 유효한 메모리 주소가 할당되지 않았다면, 널 포인터로 초기화하는 것이 좋습니다. 이렇게 하면 쓰레기 값(garbage value)으로 인한 예측 불가능한 동작을 방지할 수 있습니다.
  • 함수 인자 전달: 함수에 유효한 메모리 주소를 넘기고 싶지 않은 경우, 널 포인터를 인자로 전달할 수 있습니다.
  • 오류 처리: 포인터 변수에 접근하기 전에 널 포인터인지 먼저 검사하면 안전하게 오류를 처리할 수 있습니다. 예를 들어, 포인터가 NULL이 아닐 때만 역참조(dereference)하도록 코드를 작성하는 것이 바람직합니다.

C++에서 포인터에 0을 대입하는 것의 의미

C++에서는 포인터 변수에 0을 대입하면 해당 포인터가 NULL을 가리킨다는 뜻이 됩니다. 참고로 C++11부터는 정수형과의 혼동을 없애기 위해 전용 키워드인 nullptr을 사용하는 것이 권장됩니다.

문법

float *p = 0; // 포인터를 NULL로 초기화

알고리즘

시작
    정수형 포인터 p를 선언한다.
    p를 NULL로 초기화한다.
    "포인터의 값은"이라는 문장을 출력한다.
    포인터 p의 값을 출력한다.
종료

예제 코드

#include <stdio.h>
int main() {
    int *p = NULL; // 포인터를 null로 초기화
    printf("The value of pointer is %u", p);
    return 0;
}

실행 결과

The value of pointer is 0.

위 예제에서 포인터 p는 NULL로 초기화되었으므로 실제 저장된 주소 값이 0으로 출력됩니다. 참고로 실무 코드에서는 포인터를 출력할 때 %u 대신 %p 서식 지정자를 사용하는 것이 올바른 방법입니다.