배열
배열이란 동일한 자료형을 연속적으로 저장하는 자료구조이다.
![[자료구조] 배열(Array) - undefined - 배열 [자료구조] 배열(Array) - undefined - 배열](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
주소값을 확인해보면 4씩 증가하는 것을 확인할 수 있다.
이는 int형 데이터를 저장하기에 int의 크기인 4바이트씩 증가하는 것이다.
주소값은 각 자료형의 크기만큼 일정하게 증가하게 된다.
즉, char형 배열이라면 주소값이 1씩 증가하고, double형이라면 8씩 증가하게 된다.
배열의 선언
언어마다 배열의 생성 방법은 다르다.
여기서는 c++을 이용해서 해보도록 하겠다.
#include<iostream>
using namespace std;
int main() {
int arr[5];
for(int i=0; i<5; i++) {
arr[i] = i;
}
return 0;
}
배열의 선언은 위의 코드에서 int arr[5];와 같이
"자료형 배열명[배열의 크기]"의 형태로 선언한다.
배열에 값을 저장하는 방법은 배열에 인덱스를 통해 접근해 값을 할당하는 것이다.
예를 들어 위의 코드에서는 for문을 통해 인덱스에 접근하여 각 인덱스에 i의 값을 저장하였다.
출력 결과를 확인하면 다음과 같다.
![[자료구조] 배열(Array) - undefined - 배열의 선언 [자료구조] 배열(Array) - undefined - 배열의 선언](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
배열에 값 저장
위에서 예로 들었던 코드에서 배열에 값을 저장하는 법을 확인할 수 있다.
for(int i=0; i<5; i++) {
arr[i] = i;
}
이를 보면 "배열명[인덱스]"와 같이 배열에 인덱스를 통해 접근하고, 값을 할당하는 것을 볼 수 있다.
int arr[5] = {10, 11, 12, 13, 14, 15};
cout << arr[0] << endl; // 10
cout << arr[1] << endl; // 11
cout << arr[2] << endl; // 12
2차원 배열
위에서 봤던 배열들은 하나의 인덱스로 구분되는 1차원의 배열이다.
(x, y)로 구분되는 2차원 상에서의 배열에 대해 알아보자.
행렬을 2차원 배열로 표시하면 다음과 같다.
![[자료구조] 배열(Array) - undefined - 2차원 배열 [자료구조] 배열(Array) - undefined - 2차원 배열](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
위를 배열을 선언하기 위한 코드는 다음과 같다.
#include<iostream>
using namespace std;
int main() {
int arr[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = i * 3 + j;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
다음을 출력해보면 다음과 같이 나온다.
![[자료구조] 배열(Array) - undefined - 2차원 배열 [자료구조] 배열(Array) - undefined - 2차원 배열](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2차원 배열에서의 인덱스는 다음과 같다.
![[자료구조] 배열(Array) - undefined - 2차원 배열 [자료구조] 배열(Array) - undefined - 2차원 배열](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
1차원 배열과 같이 인덱스를 통해 접근할 수 있고, 값을 저장할 수 있다.
'자료구조' 카테고리의 다른 글
[자료구조] 트리(Tree) (1) | 2023.10.02 |
---|---|
[자료구조] 큐(Queue) (0) | 2023.09.30 |
[자료구조] 스택(Stack) (0) | 2023.09.26 |
[자료구조] 리스트(2).연결리스트(LinkedList) (1) | 2023.09.26 |
[자료구조] 리스트(1).순차리스트(ArrayList) (0) | 2023.09.25 |
댓글