온백의 코딩 블로그

온백의 비밀 기록방

Note/C language

[C언어] "배열 길이 ( 변수 크기) 구하기!" sizeof() 함수에 대해 알아보기

온백 hundred_100 2023. 1. 22. 16:01

안녕하세요, 곧 닉변할 예정인 볼트입니다.
이번엔 C언어의 함수 'sizeof()'에 대해 다뤄보려 합니다.

sizeof()는 보통 배열의 길이를 알기 위해 사용하는 경우가 많습니다.
괄호 안에다가 변수를 쓰면 끝나는 함수이지만 까먹으면 안되는 부분이 있기 때문에
저처럼 까먹고 맞왜틀 하지 마시고 꼭 읽고 도움이 되었으면 좋겠네요! ㅎㅎ


sizeof()


sizeof()라는 함수는 메모리 공간을 소모하는 크기를 'byte' 단위로 바꿔서 출력하는 함수입니다.
(그냥 길이를 재주는 함수가 아닙니다!)

저희가 변수를 만들 때 앞에 쓰는 자료형들(예: int, char, float 등)은 각자 받는 메모리의 양이 정해져 있습니다.
(1byte = 8bit, '00000000'가 1byte라고 생각하시면 됩니다.)

char 1byte
short 2byte
int 4byte
long 4byte
long long 8byte
float 4byte
double 8byte
long double 16byte

int와 long은 왜 있는 거지

Test Code - 자료형의 크기

< 코드 >

#include <stdio.h>

int main() {
	printf("%d \n", sizeof(char));
	printf("%d \n", sizeof(short));
	printf("%d \n", sizeof(int));
	printf("%d \n", sizeof(long));
	printf("%d \n", sizeof(long long));
	printf("%d \n", sizeof(float));
	printf("%d \n", sizeof(double));
	printf("%d \n", sizeof(long double));
}


< 출력 >

1
2
4
4
8
4
8
16


sizeof()는 '변수의 크기'를 구하는 함수입니다.
즉, '변수의 길이는 구하기 어렵다'라는 뜻이죠.

그런데 아까 말했듯이 배열의 길이를 구할 때는 사용할 수 있습니다.

Test Code - 변수의 크기와 배열의 크기


< 코드 >

#include <stdio.h>

int main() {
	int arr[5] = { 10, 4, 23, 543, 1234 };
	int arr2[10] = { 0 };
	
	for(int q = 0; q < 5; q++) {
		printf("%d ", sizeof(arr[q]));
	}
	
	printf("\n%d", sizeof(arr2));
}


< 출력 >

4 4 4 4 4
40

(편의상 변수를 배열로 했습니다. 배열은 자료형을 n개씩 모아둔 것이라 하나하나 비교한다면 상관 없습니다.)

위에 출력을 보면 int형 변수 부분은 다 '4'로 나왔지만 10자리 배열은 '40'이 나왔습니다.

배열은 같은 자료형 변수를 n개 씩 모아줬기 때문에
arr2[10] 이라는 배열이 '40'이 출력된겁니다. (4 x 10 = 40)

그러면 출력된 값에 자료형의 크기 만큼만 나눠준다면 배열의 길이를 얻을 수 있겠죠?

Test Code - 배열의 길이 구하기


< 코드 >

#include <stdio.h>

int main() {
	int arr[17] = { 0 };
	
	printf("%d", (sizeof(arr) / sizeof(int)));
}


< 출력 >

17



이렇게 블로그를 마치겠습니다.
감사합니다 :)



2023.01.13 - [Note/Unreal Engine] - 언리얼 엔진 자습 해보고 싶은데.. 언리얼 엔진 무료 자습 사이트 추천!

2022.12.04 - [Diary/코딩 잡 지식] - C/C++ 프로그래밍은 어디서 하나요? / Visual Studio IDE 깔아보기!

2022.12.04 - [Diary/코딩 잡 지식] - VS(Visual Studio)와 VSCode(Visual Studio Code) 차이가 뭐야? / VS와 VSC 차이 알아보기!

반응형