배열(array)
2022. 4. 11. 13:09ㆍC++/자료구조
배열(array)
- 배열은 거의 모든 프로그래밍 언어에서 기본적으로 제공되는 자료형이다.
- 배열은 동일한 타입의 데이터를 한 번에 여러 개를 만들 때 사용된다.
예를 들어 6개의 정수를 저장할 공간이 필요한 경우 다음과 같이 6개의 정수형 변수를 선언하여야한다. .
int list1, list2, list3, list4, list5, list6;
그러나 배열을 통하여 다음과 같이 선언할 수 있다.
int list[6];
6개의 정수를 저장할 공간을 만든 것이다.
배열의 인덱스
배열을 사용하면 "연속적인 메모리 공간"이 할당되고 인덱스(index) 번호를 사용하여 쉽게 접근이 가능하다.
C++에서의 1차원 배열
배열은 변수 이름 끝에 [ ]을 추가하여 선언한다. [ ]안의 숫자는 배열의 크기이다.
int list[6];
배열의 인덱스는 0부터 시작한다. 따라서 위와 같이 선언된 배열에서 배열의 요소는
list[0], list[1], list[2], list[3], list[4], list[5]이다.
배열에서 각 요소의 주소
첫 번째 배열 요소인 list[0]의 주소가 기본주소가 되고 다른 요소들의 주소는 다음과 같다.
배열의 요소 | 메모리 주소 |
list[0] | 기본주소 = base |
list[1] | base + 1*sizeof(int) |
list[2] | base + 2*sizeof(int) |
list[3] | base + 3*sizeof(int) |
list[4] | base + 4*sizeof(int) |
list[5] | base + 5*sizeof(int) |
실제로 이를 코드로 짜보면 아래와 같다.
#include<iostream>
using namespace std;
int main(void)
{
int list[6] = {0,1,2,3,4,5};
cout<<"&list[0]: "<<&list[0]<<endl; //0x61fef8 //4씩 증가하는 것을 알수있다.
cout<<"&list[1]: "<<&list[1]<<endl; //0x61fefc //sizeof(int) == 4byte
cout<<"&list[2]: "<<&list[2]<<endl; //0x61ff00
cout<<"&list[3]: "<<&list[3]<<endl; //0x61ff04
cout<<"&list[4]: "<<&list[4]<<endl; //0x61ff08
cout<<"&list[5]: "<<&list[5]<<endl; //0x61ff0c
return 0;
}
C++에서의 2차원 배열
2차원 배열은 요소들이 2차원 형태로 나열된 배열이다.
2차원 배열에서 가로줄을 행(row), 세로줄을 열(column)이라고 한다.
int list[3][5];
0열 | 1열 | 2열 | 3열 | 4열 | |
0행 | list[0][0] | list[0][1] | list[0][2] | list[0][3] | list[0][4] |
1행 | list[1][0] | list[1][1] | list[1][2] | list[1][3] | list[1][4] |
2행 | list[2][0] | list[2][1] | list[2][2] | list[2][3] | list[2][4] |
위의 선언에서는 3개의 행과 5개의 열을 가지는 2차원 배열이 생성된다.
C++에서는 배열의 배열을 만들어 2차원 배열을 구현한다.
즉, 크기가 3인 1차원 배열을 만들고 이 배열의 요소에 크기가 5인 배열을 생성하여 추가한다.
'C++ > 자료구조' 카테고리의 다른 글
스택 응용 1. 백 스페이스 키 (0) | 2022.04.22 |
---|---|
배열을 이용한 스택 구현 (0) | 2022.04.22 |
연결 리스트를 이용한 스택 구현 (0) | 2022.04.22 |
스택(stack) - 2 (0) | 2022.04.22 |
스택(stack)-1 (0) | 2022.04.18 |