컴퓨터 속에 메모리는 1차원적인 주소공간을 가지고 있다.
하지만 우린 아파트같은 구조도 필요하다.
(한층에 다섯개 집 층이 3개) 15개의 집을 생각해보자.

이렇게 사용할 수 있게하는 것이 다차원배열이다.

int a[2][2]형식으로 생성한다.
2차원,3차원,4차원 배열까지 생성가능하다.

초기화 특이점 = {0}으로 하면 전부 0으로 초기화 된다.

메모리차원에서보면 데이터가 일차원적으로 나열되어 있다.
기억하자 메모리에는 일차원적으로 나열되어있다.

 

2차원 배열의 예

#include <iostream>

using namespace std;

int main() {

	//1층에 5개집이 있는 3층 건물
	const int num_rows = 3;
	const int num_columns = 5;
	for (int i = 0; i < num_rows; i++) {
		cout << i << " -------------------------------------------" << endl;
		for (int s = 0; s < num_columns; s++) {
			cout << "[rows:" << i << ']' << '[' << s << ']' << '\t';
		}
		cout << endl;
		cout << " -------------------------------------------" << endl;
	}

	//위에 코드를 다차원 배열로 생성하기
	int array[num_rows][num_columns] = //초기화하기
	{
		{1,2,3,4,5},
		{6,7,8,9,10},
		{11,12,13,14,15}
	};
	//형식으로 초기화 할 수도 있다.
	array[0][0] = 100;

	for (int i = 0; i < num_rows; i++) {
		for (int s = 0; s < num_columns; s++) {
			//메모리가 4byte씩 증가하는걸 확인할 수 있다.
			cout << array[i][s] << " &: " << (int)&array[i][s] << '\t';
		}
		cout << endl;
	}

	return 0;
}

3차원 배열의 예

#include <iostream>

using namespace std;

int main()
{
	int a[2][3][4] = { 0 };
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 3; j++) {
			for (int s = 0; s < 4; s++) {
				cout << "i : " << i << " j : " << j << " = " << a[i][j][s] << endl;
			}
			cout << "-----------------------------------------" << endl;
		}
		cout << "================================================" << endl;
	}


	return 0;
}

2차원 배열의 필요성

- 2차원 배열은 굉장히 많은 목적으로 사용된다.

- 행렬 데이터를 표현할 때, 그래프 알고리즘을 처리할 때, 다수의 실생활 데이터를 처리할 때 등이다.

- 흔히 우리가 보는 표 구조가 2차원 배열과 흡사하다(ex:수학,영어,국어성적)

+ 호날두 85 97 79

+ 메시 88 54 56


2차원 배열의 초기화

- 2차원 배열은 1차원 배열 중첩되었다는 의미로 []를 두 번 연속하여 사용한다.

+ 자료형 배열이름 [행][열] = { {값,값},{값,값} }

실습내용

실습결과


다차원 배열

- 2차원 배열 이상의 다차원 배열 또한 사용할 수 있다.

- 컴퓨터는 기본적으로 화면에 2차원 형태만 출력할 수 있다.

실습내용



실습결과


포인터 배열의 구조분석

- 배열은 포인터와 동일한 방식으로 동작한다.

- 배열의 이름은 배열의 원소의 첫 번째 주소가 된다.

- 유일한 차이점은 포인터는 변수,배열의 이름은 상수이다.

- 포인터는 연산을 통해 자료형의 크기만큼 이동한다.

- 정수(int)형 포인터는 4바이트(Bytes)씩 이동한다.


포인터배열 구조 예제

- 포인터는 벼수여서 값이 변경된다.

실습내용

실습결과


2차원 배열 포인터 처리방법

실습내용

실습결과




+ Recent posts