반응형

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언어의 charshort의 비교 

short : 2 byte

char : 1 byte

출처:&amp;amp;amp;nbsp;https://ddanzimind.tistory.com/32

 

 

* 단순히 어떤 배열의 내부에 몇개의 인덱스가 들어있는지 알고 싶은 경우. (배열 내 인덱스의 길이)

해당 배열을 타입으로 나누면 된다. (아래의 경우는 선언된 배열이 int형일 경우.)

sizeof(arr)/sizeof(int)
반응형

+ Recent posts