C시작과 문법

sizeof 연산자

객체 크기 계산, 배열 길이 계산, 메모리 할당 크기 지정에 쓰는 `sizeof`의 핵심 규칙을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

c
int numbers[5];
size_t bytes = sizeof numbers;
size_t length = sizeof numbers / sizeof numbers[0];

설명

  • sizeof는 타입이나 객체가 차지하는 바이트 수를 구하는 연산자입니다.
  • 반환 타입은 size_t이며, 메모리 크기나 길이 계산에서 표준적으로 사용됩니다.
  • 배열 전체에 sizeof를 적용하면 전체 배열 크기가 나오므로, 원소 수 계산에 자주 씁니다.
  • 동적 메모리 할당에서는 malloc(sizeof *ptr * count)처럼 대상 타입에 맞춰 크기를 쓰면 타입 변경에 강해집니다.

짧은 예제

c
#include <stdio.h>

int main(void) {
    int values[] = {10, 20, 30, 40};
    size_t count = sizeof values / sizeof values[0];

    printf("bytes = %zu, count = %zu\n", sizeof values, count);
    return 0;
}

빠른 정리

항목설명
sizeof(type)타입의 크기를 구함
sizeof object객체의 실제 저장 크기를 구함
size_t크기와 길이를 표현하는 표준 부호 없는 타입
배열 길이 계산sizeof arr / sizeof arr[0]
할당 크기 계산sizeof *ptr * count 패턴이 자주 쓰임

주의할 점

함수 인자로 받은 배열은 이미 포인터로 decay된 상태라서 sizeof(values)가 전체 배열 크기가 아니라 포인터 크기를 돌려줄 수 있습니다.