[C언어] 배열 길이 구하기
본문 바로가기
C++/C Basic

[C언어] 배열 길이 구하기

by Macgyvering2 2020. 10. 5.

이번엔 C언어에서 배열의 길이를 구하는 예제를 살펴보자. 

 

먼저 main 함수 안에 x라는 배열을 선언하여 값을 넣는다. 

여기서는 데이터 타입을 int 형으로 했기 때문에 자료 하나 당 4byte를 차지함을 알 수 있다.

 

여기서 sizeof() 함수를 이용하는데 여기에 배열의 이름을 넣게 되면 배열이 차지하는 공간의 크기를 알 수 있다.

배열에 4개의 원소가 담겨져있다면 총 16byte를 차지할 것이다.

 

우리가 원하는 '4' 라는 정수를 얻어내기 위해서는 4라는 숫자로 나눠야 할 것이지만 배열이 int형이 아닐 수도 있다.

따라서 배열의 첫번째 원소의 크기를 sizeof() 함수로 구하여 이를 나눠주면 된다.

 

이를 매크로 함수로 구현하였는데 매크로 함수는 전처리기에서 동작하는 것이기 때문에 괄호를 붙이지 않으면 매크로 함수를 여러번 호출할 때 오류를 보게 될 것이다. 매크로 함수는 그 값에 괄호를 반드시 붙여주는 습관을 들이자.

#include <stdio.h>

#define ARRAY_SIZE(a)    (sizeof(a)/sizeof(a[0]))

int main(void) {
	int x[] = { 2, 3, 4, 5 };
	printf("x배열 원소의 개수: %d\n", ARRAY_SIZE(x));

	return 0;
}

 

댓글