본문 바로가기

교육 노트/C++ 기초강의

[C++ 때려잡기] C++ 기초강의 4-2 배열과 다중배열

2018/08/26 - [교육 노트/C++ 기초강의] - [C++ 때려 잡기] C++ 기초강의 4-1 간단한 구조체



배열에 관해서는 이전에 간단히 배워본적이있다.



이런식으로 배열을 만들때 메모리 관점에서 어떻게 동작하는것일까?


1. 배열의 메모리


배열은 특정 자료형 여러개를 한번에 관리하는것이다

그래서 4바이트 int를 5개 만들면 20바이트를 사용하고

이 5개의 int는 메모리상에서 연속되어있다.



기본적으로 메모리는 1바이트 단위로 관리되며

1바이트 단위로 위치정보 (주소값)을 가지고있다. 이는 컴퓨터에서 관리하여

처음 요소가 메모리의 주소 1000번에 저장되었다면 그다음 값음 1004번에 저장되는것이다. (4바이트 이므로)



초기화를 하면 다음과같이 된다.




그럼 8바이트를 가지는 double은 어떻게 저장될까




특정 하나만 초기화 했다면 다음과 같다



메모리에 배열이 어떻게 잡히는가에 대하여 이해 해야한다.





이제 Student 구조체를 만들고 Student 배열을 만들어 각각 요소를 입력받고 이를 파일로 저장해보고


해당 파일을 불러들어 학생 배열에 집어놓고 이를 출력하는 프로그램도 제작해보아라







2. 다중배열 (이차원 배열, 삼차원 배열 ...)

다중배열은 이름부터 알다시피 배열의 배열이다

다중배열은 같은 타입의 배열들을 한 데 묶어둔 것!

이를 사용하는 이유는 좌표계의 경우 x,y의 쌍으로 이루어져있다

0,0 부터 100,100 까지의 좌표계가 있다면


int x1, x2, x3, … x100;
int y1, y2, y3, … y100;
-> int coordinate[100][100];
이런식으로 관련있는 배열들끼리 묶으면
선언하기도 사용하기도 관리하기도 편하다!


다중배열을 다음과 같이 사용한다



여기서




과 같은 의미를 가진다




해당 다중 배열을 메모리적 관점에서 살펴보면



과 같다 여기서 board[0] ~ 4는


가 된다.



그럼 다중배열을 배웠으므로


2 x 2 배열 Matrix1, Matrix2를 선언하고
각각의 값을 0~9까지 랜덤하게 초기화 한 후에
행렬 합, 행렬 곱을 계산하라.


참고로 다들 알겠지만 행렬곱은 진짜 행렬 곱대로 수행하기를 바란다.


다음은 강의는 포인터이다. 포인터를 할때 배열, 메모리에 많은 연관이 있으므로 확실히 이해하고 넘어가기 바란다.



728x90