반응형
C언어의 배열(Array)는 보통 행렬 Matrix로 비유해서 설명한다.
아래 예시를 보고 어떤식으로 sizeof 의 크기가 나오는지 알 수 있다.
sizeof 의 크기는 자료형에 따라 크기가 다르다. char, int, float 등
아래 예시는 int 자료형이고, int는 크기가 4 byte이다.
#include <stdio.h>
/*
2차원 배열의 크기 sizeof에 대해서.
*/
int main()
{
// 2차원 배열의 sizeof 크기 구해보기.
int arr1[3][4];
int arr2[7][9];
printf("세로3 가로4: %d \n", sizeof(arr1));
/*
int형이므로 간격 4씩 차이. (int는 4byte 이므로)
[ ] [ ] [ ] [ ] 4x4 = 16
[ ] [ ] [ ] [ ] 4x4 = 16
[ ] [ ] [ ] [ ] 4x4 = 16
16+16+16 = 48
즉, arr1[3][4]의 2차원 배열의 크기는 48 byte
*/
printf("세로7 가로9: %d \n", sizeof(arr2));
/*
int형이므로 간격 4씩 차이. (int는 4byte 이므로)
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
36+36+36+36+36+36+36 = 252
즉, arr2[7][9]의 2차원 배열의 크기는 252 byte
*/
return 0;
}
sizeof 결과는 아래와 같다.
(추가)
흔이 자료형의 크기를 말할 때 int는 4 byte, char는 1 byte, float는 8 byte 등 으로 얘기하는데, 이는 구체적인 크기가 딱 정해져 있는 것이 아니다. 자료형은 상대적인 크기이며, 해당 CPU가 무엇이냐에 따라 그 크기는 달라진다.
위 일반적인 크기는 우리가 대부분 사용하는 개인용 PC기준이기 때문이다. 만약 임베디드 같은 작은 보드의 CPU의 경우는 자원의 양이 한정되어있고, 자료형의 크기 또한 작아진다.
C언어의 char과 short의 비교
short : 2 byte
char : 1 byte
* 단순히 어떤 배열의 내부에 몇개의 인덱스가 들어있는지 알고 싶은 경우. (배열 내 인덱스의 길이)
해당 배열을 타입으로 나누면 된다. (아래의 경우는 선언된 배열이 int형일 경우.)
sizeof(arr)/sizeof(int)
반응형
'C언어 \ C++' 카테고리의 다른 글
[C언어] C언어 함수에 배열을 input 인자로 전달하기 (0) | 2022.01.11 |
---|---|
[C언어] C언어 배열 자동 할당, 배열 부분 할당, 배열 colcumn 값만 할당 (0) | 2022.01.10 |
[C언어] 실수(float number)의 비트 표현, C언어 실수 사용하기, 실수 0.0의 의미 (2) | 2022.01.10 |
[C언어] C언어 음의 정수(Negative Integer)의 비트 표현 방법. 마이너스 비트 표현 (0) | 2022.01.10 |
[C언어] C언어 데이터를 8진수, 10진수, 16진수로 저장 및 출력하기 (0) | 2022.01.09 |