민돌이2 2022. 7. 26. 11:11

배열(array)은 데이터형이 같은 여러 개의 값을 연속적으로 저장할 수 있는 데이터 구조이다. 배열에서 각 값은 배열 원소(element)라는 개별 공간에 저장된다. 컴퓨터는 이 모든 원소들을 메모리에 연속적으로 배치한다.

배열은 선언 구문을 사용하여 생성한다. 배열 선언 구문에서는 다음과 같은 세 가지를 선언한다.

  • 각 원소에 저장될 값의 데이터형
  • 배열의 이름
  • 배열 원소의 개수

 

short months[12];

배열의 생성

 

위 코드는 배열의 이름이 months이고, 12개의 원소를 가지며, 각 원소에는 short형 값을 저장할 수 있음을 나타낸다. 배열의 각 원소는 개별적으로 간단한 변수처럼 취급할 수 있는 변수이다.

배열은 각각의 배열 원소에 인덱스(index)를 사용하여 개별적으로 접근이 가능하다. 여기서 기억해야 할 것은 12개의 원소는 인덱스로 0 ~ 11까지를 의미한다.

 

배열의 초기화 방식은 여러가지가 있다. 만약 초기화를 해주지 않는다면, 쓰레기값이 들어간다.

int a[4] = {3, 6, 8, 10}; //문제 없음
int b[4]; //쓰레기값 대입
int c[4] = { 0 }; //모든 원소 0으로 초기화
int d[4] = { }; //모든 원소 0으로 초기화

초기화 리스트를 사용하면 선언 시 배열의 원소의 개수를 생략할 수 있다.

int a[] = { 1, 2, 3}; //자동으로 원소의 개수 3으로 잡는다.

 


배열 선언시 원소의 개수는 상수여야 한다. 즉, 변수는 들어갈 수 없다. 배열은 메모리가 연속으로 나열된 정적인 자료구조이기 때문에, 컴파일시 메모리 할당을 해야한다. 하지만, 컴파일러가 배열을 읽을 때, 해당 변수를 알고 있는지, 확답할 수 없기 때문이다. 다만 예외로 const나 #define의 변수는 가능하다.

#define numA 2
int main()
{	
	using namespace std;

	const int numB = 2;
	int numC = 2;

	int a[numA]; //가능
	int b[numB]; //가능
	int c[numC]; //불가
	
	return 0;
}

 

728x90