본문 바로가기

:: 프로그래밍 ::/수업 내용

2024.02.23 C++) 배열

 

 

1. 배열이란?

 

같은 형식의 데이터를 다수로 저장하는 '자료구조'이다.

 

 

배열은

int arr1[4] = { 1, 2, 3, 4};

 

이런 형식으로 구성되어 있으며,

변수명 뒤에 숫자로 크기를 구성해 줄 수 있고, 대입 연산자를 통해 값을 정해줄 수 있다.

반드시 모든 배열에 값을 넣을 필요는 없으며, 초기화가 목적이면 중괄호만 대입하여 초기화를 해줄 수 있다.

 

 

int arr2[8] = { 1, 2, 3 };
  arr[0] arr[1] arr[2] arr[3] arr[4] arr[5] arr[6] arr[7]
1 2 3 0 0 0 0 0
인덱스 0 1 2 3 4 5 6 7
주소 ~97FA58 ~97FA5C ~97FA60 ~97FA64 ~97FA68 ~97FA6C ~97FA70 ~97FA74

 

해당 표는 arr2에 대한 값, 인덱스, 주소이다.

값은 지정한 값 이외에는 초기화가 된 상태이므로, 이외의 값은 정수형변수의 초기값인 0으로 초기화가 되었고,

인덱스는 시작값이 0부터 시작되므로 인덱스의 최대값은 항상 (배열의 크기-1)로 유지된다.

 

주소는 실행이 되는 순간 메모리에 할당이 되어, 크기가 구성이 되는데, 할당된 주소값도 각 배열마다 가지고 있다.

정수형 변수는 4Byte를 가지고 있으므로, 주소값 역시 4Byte씩 커지는 것을 볼 수 있다.

 

 

 

 

이차원배열

 

이차원배열은 '배열의 집합'이라고 생각하면 된다.

int arr[2][3] = {
	{1, 2, 3},
	{4, 5, 6}
}

 

 

이차원 배열의 코드는 위와 같이 구성되어있고, 행과 열로 구성되어있다.

arr[2][3] 1열 2열 3열
1행 arr[0][0] arr[0][1] arr[0][2]
2행 arr[1][1] arr[1][1] arr[1][2]

 

  arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2]
1 2 3 4 5 6
주소 ~97FA58 ~97FA5C ~97FA60 ~97FA64 ~97FA68 ~97FA6C

 

그리고 이에 해당하는 주소값은 해당 행이 끝나면 다음 행이 이어받는 형식이다.

사실상 행 단위로만 끊었다 뿐이지 실질적으로는 한 줄로 저장되어있다.