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;
}
참조
'C' 카테고리의 다른 글
Declaration vs Definition (선언과 정의) (0) | 2024.06.24 |
---|---|
typedef (자료형 별칭 부여 키워드) (0) | 2024.06.21 |
strcpy() strcpy_s() (문자열 복사 함수) (0) | 2024.06.21 |
struct (구조체) (0) | 2024.06.21 |
전처리기 (Preprocessor, Precompiler) (0) | 2024.06.19 |