size_t는 C 언어에서 사용되는 부호 없는 정수형(unsigned integer) 데이터 타입입니다. 주로 메모리에 저장된 객체의 크기를 바이트 단위로 표현하며, sizeof 연산자의 반환 타입으로도 사용됩니다.
size_t의 주요 특징
- 객체의 크기를 바이트 단위로 나타냅니다.
sizeof연산자의 반환 타입입니다.- 배열 인덱싱 및 반복문에서의 카운팅에 적합합니다.
- 부호 없는 타입이므로 절대 음수가 될 수 없습니다.
strlen,strcspn같은 표준 라이브러리 함수의 반환 타입이기도 합니다.
size_t 문법
C 언어에서 size_t를 선언하는 기본 문법은 다음과 같습니다.
const size_t var_name;
var_name: 선언할 변수의 이름입니다.
size_t 사용 예제
다음은 C 언어에서 size_t를 활용한 실제 코드 예제입니다.
#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
int main(void) {
const size_t x = 150;
int a[x];
for (size_t i = 0; i < x; ++i)
a[i] = i;
printf("SIZE_MAX = %lu\n", SIZE_MAX);
size_t size = sizeof(a);
printf("size = %zu\n", size);
}실행 결과
SIZE_MAX = 18446744073709551615 size = 600
코드 분석
위 프로그램에서는 size_t 타입의 상수 변수 x를 선언하고, 그 크기만큼 정수형 배열 a를 생성했습니다. 이후 반복문에서 size_t 타입의 인덱스 변수를 사용해 각 배열 요소에 값을 할당했습니다.
printf("SIZE_MAX = %lu\n", SIZE_MAX);
size_t size = sizeof(a);SIZE_MAX는 size_t 타입이 표현할 수 있는 최댓값으로, 위 실행 결과(64비트 환경 기준 약 1.8×10¹⁹)를 통해 확인할 수 있습니다. 또한 sizeof(a)를 통해 배열 전체 크기인 int형 4바이트 × 150개 = 600바이트가 출력됩니다.
size_t를 사용해야 하는 이유
size_t는 시스템마다 크기가 다를 수 있지만, 플랫폼에 독립적인 방식으로 메모리 크기를 안전하게 표현할 수 있어 이식성(portability) 측면에서 매우 유용합니다. 따라서 메모리 크기 계산, 배열 크기 지정, 라이브러리 함수 반환값 처리 시에는 int보다 size_t를 사용하는 것이 권장됩니다.