본문 바로가기
C

배열 array

by stdlib.h 2016. 3. 28.

배열이란 여러개의 데이터를 묶음으로 선언하는 방식이다.

선언은 자료형 변수명[개수]; 로 선언한다.

ex) int arr[10];


배열은 다수의 데이터를 처리할때 매우 용이하다.

만약 100개의 데이터를 받아야한다면 우리는 중복되지않는 이름의 변수를 100개나 선언해야 한다.

변수의 이름짓기가 가장 어려운만큼 큰 난관이 아닐수 없다.

만약 짓는다 하더라도, 그 많은 변수명을 다 기억할 수는 없다.

때문에 배열은 이러한 상황에서 매우 용이하다.


각 첨자는 첨자연산자를 통하여 표현한다.

배열의 시작은 0부터 시작한다.

즉, int arr[10] 을 했다면, 첫번째값은 arr[0] 이다.

두번째값은 arr[1] 이다.

또한, arr[n-1] 은 arr의 n 번째 데이터를 의미한다.

왜냐하면 arr은 arr[0] 부터 시작하기 때문이다.

이런식으로 마지막 값은 arr[선언한 갯수-1] 이다.


간단히 정리하자면, 배열은 변수를 묶어놓은것이다.


배열을 선언하는것과 여러개의 변수를 선언하는것의 큰 차이는 메모리가 어떻게 할당되는지 이다.




 

배열은 처음 arr[0] 이 할당된 주소부터 주르륵 할당되지만,

여러개의 변수는 서로 다른 주소에 할당된다.

때문에 배열에는 arr[인덱스] 가 아닌, 다른 방법으로도 접근할 수 있는데, 이는

*(arr + 인덱스) 이다.(기준점을 arr로 잡았다면)

왜냐하면, 배열은 연속적으로 메모리를 잡기 때문에, 어떠한 기준점을 잡으면, 

그 지점으로부터 + 인덱스의 주소의 값을 가져옴으로써 좌우의 데이터를 표현할 수 있다.

따라서 arr[0] 은 *arr이고, arr[1] 은 *(arr+1) 이다.



배열에는 다차원배열이란것이 존재한다.

간단히 설명하자면, 배열을 배열로 묶은것이 다차원 배열이다.

다차원배열중 일부인 이차원 배열의 선언은 다음과 같다.

자료형 변수명[2차원 배열의 개수][1차원 배열의 개수];

이때 총 생성되는 변수는 (2차원배열의 개수 * 1차원 배열의 개수) 개이다.


다차원 배열또한 다음과 같은 구조이다.





이처럼, 다차원배열또한 그보다 낮은 차원의 배열을 배열으로 묶은것이다.



'C' 카테고리의 다른 글

이진탐색  (0) 2016.03.28
선택정렬 & 버블정렬  (0) 2016.03.28
문자열  (0) 2016.03.28
과제  (0) 2016.03.28
ASCII 아스키코드  (0) 2016.03.28