C 언어 - sizeof 함수

컴퓨터/C

728x90
반응형

프로그램이 쓰는 공간을 알아보자 - sizeof

sizeof 함수는 프로그래머가 만든 소스코드에서 메모리 공간을 실제 몇 byte를 잡아먹고 있는지 확인하기 위한 함수입니다.

C언어에서 기본적으로 제공되는 함수이며 이 함수를 통해 C언어에서 내가 사용하는 변수 , 자료형 등의 실제 byte를 알 수 있습니다. 추가적으로 다른 함수들에서 크기를 알아야 될 때에도 같이 사용하기도 합니다.

 

자료형의 크기

예전에 한번 언급한 적이 있었지만, 자료형의 크기(byte)는 어떠한 기준에 의해서 정해진 것입니다. 따라서 기준이 바뀐다면, 변화될 수도 있는 것입니다. (물론 매우 낮은 확률이겠지만)  또한 다른 언어들에서 동일한 자료형의 이름이여도 byte수가 다른 경우도 있을 수 있습니다. 

프로그래머 자신이 사용하는 IDE환경에서 C언어 자료형에 대하여 크기를 알아볼수 있습니다.

#include<stdio.h>

int main()
{
	printf("자료형 int의 크기 : %dbyte\n", sizeof(int));
	printf("자료형 double의 크기 : %dbyte\n", sizeof(double));
	printf("자료형 char의 크기 : %dbyte\n", sizeof(char));

	printf("자료형 int*의 크기(포인터 변수) : %dbyte\n", sizeof(int*));
	printf("자료형 double*의 크기(포인터 변수) : %dbyte\n", sizeof(double*));
	printf("자료형 char*의 크기(포인터 변수) : %dbyte\n", sizeof(char*));
	return 0;
}

또한 우리가 만든 사용자정의 자료형 또한 그 크기를 확인할 수 있습니다.

#include<stdio.h>

typedef struct _Student
{
	char name[10];
	int scoure;
	int number;
}STUDENT;

int main()
{
	printf("구조체 STUDENT의 크기 : %d\n", sizeof(STUDENT));
	return 0;
}

응용해보기

자료형의 크기 뿐 아니라 내가 사용하는 변수, 배 열등의 크기도 알 수 있습니다.

#include<stdio.h>

int main()
{
	char arr[50] = { 0, };

	printf("배열 arr의 크기 : %d", sizeof(arr));
	return 0;
}

이렇게 크기를 알수 있으면 조금 더 다양한 방법으로 활용해서 유연한 소스코드를 만들 수 있을 것입니다.

#include<stdio.h>

int main()
{
	char arr[50] = { 0, };

	//for문 방법 1 - 배열의 크기가 변경된다면 수정 필요
	for (int i = 0; i < 50; i++)
	{
		arr[i];
	}

	//for문 방법 2 - 배열의 크기가 바뀌어도 정상 동작
	for (int i = 0; i < sizeof(arr); i++)
	{
		arr[i];
	}
	return 0;
}

간단하게 위와 같은 방법도 있고 그 외에 정말 다양하게 많이 사용되는 함수 중 하나입니다. 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :