Menu
Coddy logo textTech

NULL 포인터

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 5번째.

때때로 포인터를 선언해야 하지만 즉시 할당할 유효한 메모리 주소가 없는 경우가 있습니다. 이러한 상황에서는 포인터를 NULL이라고 불리는 특별한 값으로 초기화하는 것이 중요합니다.

NULL 포인터는 유효한 메모리 주소를 가리키지 않는 포인터입니다. C에서 NULL은 일반적으로 0 또는 (void*)0으로 정의됩니다. 포인터를 NULL로 초기화하면, 현재 유용한 어떤 것도 가리키고 있지 않음을 명시적으로 나타내는 것입니다.

int *ptr = NULL;    // 포인터를 NULL로 초기화
printf("%p", ptr);  // 이것은 0 또는 (nil)을 출력합니다

포인터를 NULL로 초기화하는 것은 포인터가 임의의 쓰레기 값을 포함하는 것을 방지하기 때문에 좋은 프로그래밍 관습으로 여겨집니다. 초기화되지 않은 포인터는 임의의 메모리 주소를 포함할 수 있으며, 실수로 이를 사용하려고 할 경우 예측할 수 없는 동작으로 이어질 수 있습니다.

포인터를 사용하기 전에 NULL인지 확인할 수 있으며, 이는 충돌을 방지하고 코드를 더 견고하게 만드는 데 도움이 됩니다. 이러한 안전 점검은 프로그램이 더 복잡해짐에 따라 특히 중요해집니다.

challenge icon

챌린지

쉬움

적절한 NULL 포인터 초기화 및 확인을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. safe_ptr이라는 이름의 정수형 포인터를 선언하고 NULL로 초기화합니다.
  2. char_ptr이라는 이름의 문자형 포인터를 선언하고 NULL로 초기화합니다.
  3. if 문을 사용하여 safe_ptr이 NULL인지 확인하고, NULL인 경우 "safe_ptr is NULL"을 출력합니다.
  4. if 문을 사용하여 char_ptr이 NULL인지 확인하고, NULL인 경우 "char_ptr is NULL"을 출력합니다.
  5. printf%p 형식 지정자를 사용하여 safe_ptr에 저장된 메모리 주소를 출력합니다.
  6. printf%p 형식 지정자를 사용하여 char_ptr에 저장된 메모리 주소를 출력합니다.

출력 결과는 다음과 같은 형식으로 표시되어야 합니다:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

실제 메모리 주소는 시스템에 따라 0, (nil) 또는 이와 유사한 NULL 표현으로 표시되지만, 형식과 레이블은 위에 표시된 것과 정확히 일치해야 합니다.

치트 시트

NULL 포인터는 유효한 메모리 주소를 가리키지 않는 포인터입니다. C 언어에서 NULL은 일반적으로 0 또는 (void*)0으로 정의됩니다.

무작위 가비지 값을 방지하기 위해 포인터를 NULL로 초기화하세요:

int *ptr = NULL;    // 포인터를 NULL로 초기화
printf("%p", ptr);  // 0 또는 (nil)이 출력됩니다

충돌을 방지하기 위해 포인터를 사용하기 전에 NULL인지 확인하세요:

if (ptr == NULL) {
    // NULL 케이스를 안전하게 처리
}

직접 해보기

#include <stdio.h>

int main() {
    // TODO: 여기에 코드를 작성하세요
    // 포인터 선언 및 초기화
    // 포인터가 NULL인지 확인
    // 필요한 출력값 인쇄
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨