기본 패턴
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)가 전체 배열 크기가 아니라 포인터 크기를 돌려줄 수 있습니다.