C포인터와 메모리

포인터 기본

주소를 저장하고 역참조하는 C 포인터의 가장 기본적인 의미와 사용법을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

c
int value = 10;
int *ptr = &value;
*ptr = 20;

설명

  • 포인터는 값을 직접 담는 것이 아니라 어떤 값이 저장된 메모리 주소를 담습니다.
  • &value는 변수의 주소를 구하고, *ptr은 그 주소에 저장된 실제 값을 읽거나 씁니다.
  • 포인터를 쓰면 함수에서 원본 값을 수정하거나 동적 메모리와 배열을 다루기 쉬워집니다.
  • 유효한 대상이 없는 포인터는 NULL로 초기화하는 편이 안전합니다.

짧은 예제

c
#include <stdio.h>

void add_bonus(int *score) {
    *score += 5;
}

int main(void) {
    int score = 90;
    add_bonus(&score);
    printf("score = %d\n", score);
    return 0;
}

빠른 정리

항목설명
type *ptr포인터 선언
&value변수의 주소를 구함
*ptr포인터가 가리키는 값을 읽거나 씀
NULL아무 대상도 가리키지 않음
주소 전달원본 데이터를 함수 안에서 수정 가능

주의할 점

초기화되지 않은 포인터를 역참조하면 심각한 오류가 납니다. 포인터는 항상 무엇을 가리키는지 먼저 분명히 해야 합니다.