C
sizeof() 연산자
by yororing
2024. 6. 21.
01 sizeof() 연산자
1. 정의
- 피연산자(연산자의 대상, operand)의 메모리의 크기를 바이트(Byte) 단위로 계산하여 반환
- 반환 타입: size_t
- 포인터, 데이터 타입, 구조체, 공용체 모두 사용 가능
// 데이터 타입 피연산자
size_t size_char = sizeof(char); // 1
size_t size_int = sizeof(int); // 4
size_t size_float = sizeof(float); // 4
size_t size_double = sizeof(double); // 8
// 표현식 피연산자
int a = 10;
double d = 10.24;
size_t size = sizeof(a + d); // 8
- sizeof(a+d)가 8인 이유는 a + d 연산 처리 시 타입이 큰 double로 형변환되기 때문
02 sizeof() 사용
1. 원소 개수 구하기
1) 1차원 배열의 원소 개수 구하기
#include <stdio.h>
int main() {
int arr[10];
printf("%d\n", sizeof(arr)); // 전체 크기: 40
printf("%d\n", sizeof(arr) / sizeof(int)); // 원소의 개수: 10
return 0;
}
2) 2차원 배열의 원소 개수 구하기
- 전체 원소 개수는 1차월 배열에서 구하는 방식과 동일
- 행의 개수는 배열에서 한 줄을 나눠서 구하기
- 열의 개수는 한 줄을 자료형으로 나눠서 구하기
#include <stdio.h>
int main() {
int arr[3][5];
printf("%d\n", sizeof(arr)); // 전체 크기: 60
printf("%d\n", sizeof(arr) / sizeof(int)); // 전체 원소의 개수: 15
printf("%d\n", sizeof(arr) / sizeof(arr[0])); // 행의 개수: 3
printf("%d\n", sizeof(arr[0]) / sizeof(int)); // 열의 개수: 5
return 0;
}
3) 구조체 배열의 원소 개수 구하기
#include <stdio.h>
struct student {
int num;
char name[10];
};
int main() {
struct student s[15];
printf("구조체 배열 원소의 개수\n");
printf("%d\n", sizeof(s) / sizeof(struct student)); // 15
return 0;
}
참조
- https://wtg-study.tistory.com/59
- https://80000coding.oopy.io/a4b01007-b645-4439-b1aa-50b72ade8283
-