sizeof 연산자 — 자료형·변수의 메모리 크기와 바이트 | 기초 C언어 5.3.1
기초 C언어Chapter 05 연산자 › Section 03 기타 연산자 › 01
5.3.1 sizeof 연산자
자료형이나 변수가 메모리에서 차지하는 바이트 수를 재는 연산자. 기호가 아니라 낱말인 것은 이것 하나.
01메모리 크기를 재는 연산자교재 139p
- sizeof 연산자 — 자료형 또는 변수가 메모리에서 실제로 몇 바이트(byte)를 차지하는지 알려 주는 연산자.
- 범위의 바탕이 크기 — 4.1.3에서 본 「자료형마다 담을 수 있는 범위가 다름」의 바탕이 바로 이 크기. 크기가 담을 수 있는 값의 개수를 정함.
- 측정 도구 — 만들어 둔 변수 상자, 앞으로 만들 상자의 설계도인 자료형이 얼마나 큰지 재어 보는 도구.
02크기는 환경에 따라 달라짐교재 139p
- 같은 이름, 다른 크기 — 32비트 컴퓨터의 int와 64비트 컴퓨터의 int는 크기가 다를 수 있음.
- 숫자를 직접 적으면 — 지금 쓰는 컴퓨터에서는 맞더라도 다른 환경으로 옮기면 어긋날 수 있음.
- sizeof 를 쓰면 — 현재 환경에 맞는 정확한 크기를 프로그램이 스스로 재어 옴. 호환성 높은 코드에 도움이 됨.
| 자료형 | 일반적인 환경에서의 크기 |
|---|---|
| char | 1바이트 — 글자 하나를 담는 자리 |
| int | 4바이트 — 정수를 담는 기본 크기 |
| double | 8바이트 — float의 두 배 |
03쓰는 꼴은 두 가지교재 139p~140p
sizeof(자료형)sizeof(변수이름)
1sizeof(자료형)
- 괄호 안에 int · double 같은 자료형 이름 — 설계도의 크기.
2sizeof(변수)
- 괄호 안에 이미 선언된 변수 이름 — 만들어 둔 상자의 크기. 선언이 먼저 있어야 함.
여기서 자주 틀림
지금까지 본 연산자는 모두 기호였지만 sizeof 만 낱말로 되어 있음. 괄호가 붙어 함수를 부르는 것처럼 보여도 연산자임.
04결과를 찍을 때는 %zu교재 140p
printf("int 크기: %zu 바이트\n", sizeof(int));
- 결과는 size_t — sizeof 의 결과값은 크기를 담기 위해 따로 마련된 size_t 자료형.
- %d 가 아니라 %zu — 크기는 음수가 될 수 없어 %zu 가 가장 정확. %d 로도 대개 맞게 보이지만 환경에 따라 어긋날 수 있음.
네 자료형과 변수의 크기를 찍어 보는 전체 코드와 줄별 해설, 실행 결과는 교재 140p CODE 5.10 에 있습니다.
05배열의 요소 개수 구하기교재 141p
int scores[] = {10, 20, 30, 40, 50};int count = sizeof(scores) / sizeof(scores[0]);
- 전체 ÷ 요소 하나 — 배열 전체 크기를 요소 하나의 크기로 나누면 요소의 개수. int 가 4바이트면 20 ÷ 4 로 5.
- 세지 않고 계산으로 — 배열의 크기를 나중에 바꾸어도 이 줄은 고칠 것이 없음. 이 방법은 8장 배열에서 다룸.
이 절의 핵심 정리
- sizeof는 자료형이나 변수가 메모리에서 차지하는 바이트 수를 알려 준다.
- 쓰는 꼴은 sizeof(자료형)과 sizeof(변수) 두 가지다.
- 결과는 size_t이므로 %zu로 출력하는 것이 가장 정확하다.
- 자료형의 크기는 컴퓨터 환경에 따라 달라질 수 있다.
- 배열 전체 크기를 요소 하나의 크기로 나누면 요소 개수가 나온다.
강의 자료5.3.1 sizeof 연산자
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기