본문 바로가기
개발/C, C++

[c/c++] 1차원 배열

by 77monkey 개발자 2023. 8. 25.
반응형

배열을 다루게 되면 할 수 있는 것이 많아집니다. 1차원 배열에 대해서 설명하려고 합니다. 배열 선언과 배열 특징에 대해서 알아보도록 합시다. 

 

배열

먼저 배열에 대해서 알아보면, 배열은 동일한 데이터 타입을 가진 여러 개의 변수를 하나의 이름으로 묶어서 관리하는 자료 구조입니다. 배열은 연속적인 메모리 공간에 요소들이 저장되며, 각 요소는 인덱스를 이용하여 접근할 수 있습니다. 

 

배열 선언

배열 선언은 아래와 같이 합니다.

dataType은 배열에 저장되는 데이터 타입을 나타내고,

arrayName은 배열의 이름을 의미하고,

arraySize는 배열의 크기를 나타내는 정수입니다.

dataType arrayName[arraySize];

좀 더 이해하기 쉽게 그림으로 나타내 보았습니다. 

배열 선언

 

배열 예시

배열은 아래와 같이 person0 ~ person4까지 변수를 선언하는 것을 배열을 통해서 한번에 선언할 수 있습니다.

#include <stdio.h>

int main() {

	int person0 = 0;
	int person1 = 1;
	int person2 = 2;
	int person3 = 3;
	int person4 = 4;

	printf("%d %d %d %d %d",
		person0, person1, person2, person3, person4);
	
	return 0;
}

하지만 배열을 사용하면 위와 같은 코드를 훨씬 편하게 작성할 수 있습니다. 

person이라는 배열명에 int 타입으로 5개가 선언되고, 다음에 설명할 초기화를 통해서 0 ~ 4까지 설정합니다. 이를 for문을 통해서 출력을 하면 훨씬 편하게 출력할 수 있습니다. 예시가 변수 5개라서 그렇지만, 만약 10개, 100개가 된다면 생각하는 것보다 훨씬 간편한 코딩이 되고 편리해지는 것을 볼 수 있습니다.

#include <stdio.h>

int main() {

	int person[5] = { 0, 1, 2, 3, 4 };

	for (int i = 0; i < 5; i++)
		printf("%d ", person[i]);
	
	return 0;
}

 

배열의 특징

배열은 다음과 같은 특징을 가지고 있습니다. 

 

1. 동일한 데이터 타입

배열은 모두 동일한 데이터 타입의 요소로 이루어져야 합니다. 예를 들어, 정수 배열은 모든 요소가 정수여야 합니다.

 

2. 고정된 크기

배열을 선언할 때 크기를 지정해야 합니다. 이 크기는 배열이 저장할 수 있는 요소의 개수를 의미하며, 한 번 정해지면 변경할 수 없습니다. 단, 배열을 선언할 때는 배열의 크기를 지정하지 않고 배열값을 지정할 수 있습니다. 그렇다고 배열의 크기가 변동된다는 의미는 아닙니다. 예시는 아래와 같습니다.

week라는 배열의 크기는 정해지지 않았지만, 0 ~ 6까지의 값으로 고정했기 때문에 이 배열의 크기는 7입니다. 그렇기 때문에 접근할 수 있는 인덱스는 6까지입니다.

int week[] = {0,1,2,3,4,5,6};

 

3. 0부터 시작하는 인덱스

C 언어의 배열은 0부터 시작하는 인덱스를 사용합니다. 첫 번째 요소의 인덱스는 0이며, n개의 요소를 가진 배열의 마지막 요소의 인덱스는 n-1입니다. 예시를 들면 int array[3]; 이렇게 선언을 하면 접근할 수 있는 배열의 index는 0 ~ 2입니다. 3으로 작성하는 실수를 자주 하게 되는데, n-1이 마지막 index라는 점을 잊지 마시길 바랍니다.

 

4. 연속적인 메모리 공간

위에서 보신 그림과 같이 배열은 연속적인 메모리 공간에 요소들이 연속적으로 저장됩니다. 이로 인해 배열의 요소에 접근하는 시간이 상수 시간(O(1))으로 가능합니다.

 

5. 반복문을 통한 접근

배열의 모든 요소에 접근하기 위해 반복문을 사용할 수 있습니다. 일반적으로 for 루프 등을 이용하여 배열의 요소를 처리하거나 탐색합니다. 이 부분은 위에서 보여드린 예시를 통해서 이해하셨을 것입니다.

 

6. 크기 제한 

배열의 크기는 런타임에 동적으로 변경할 수 없습니다. 만약 더 많은 요소를 저장해야 한다면, 새 배열을 생성하고 기존의 데이터를 복사해야 합니다. 배열을 선언할 때, 크기는 변수로 선언할 수 없고 상수로 정의되어야 합니다. 간혹 변수가 쓰일 수 있지만, const를 통해서 바뀌지 않은 숫자만을 쓸 수 있습니다. 

#include <stdio.h>

int main() {
	const int array_size = 5;
	int arr[array_size];

	return 0;
}

 

마무리

배열의 선언과 특징에 대해서 오늘 알아 보았습니다. 배열을 정말 많이 사용되는 자료구조이기 때문에 배열에 대해서 잘 알아두면 좋을 것 같습니다.

반응형

'개발 > C, C++' 카테고리의 다른 글

[c/c++] 배열 룩업 테이블(look up table)  (0) 2023.08.27
[c/c++] 1차원 배열 (2)  (0) 2023.08.26
[c/c++] switch문  (0) 2023.08.21
[c/c++] do while문  (0) 2023.08.20
[c/c++] while문  (0) 2023.08.17