티스토리 뷰



배열은 같은 데이터형의 변수를 메모리에 연속적으로 할당하고 같은 이름으로 사용하는 방법을 제공한다.


배열을 선언하는 기본적인 형식은 다음과 같다.



데이터형 배열명 [크기];   - 형식


int        num      [5];

float      ave       [10];

short      arr       [100];

char       str       [80];

double     x        [MAX];



배열을 선언하려면 배열의 데이터형과 배열명, 배열의 크기가 필요하다.

이게 배열의 기본적인 형식이다.



배열의 크기는 0보다 큰 정수형으로 지정해야한다.

다음과 같은 상황은 모두 컴파일 에러가 된다.


int arr1[ ]  <-----------배열의 크기가 없으므로 컴파일 에러

int arr2[0 <----------- 배열의 크기가 0이므로 컴파일 에러


int size = 5;

int arr3[size];  <---------- 배열의 크기가 변수이므로 컴파일 에러

int arr4[size + 10]  <----------- 배열의 크기가 변수를 포함한 수식이므로 컴파일 에러




배열의 사용 예



원래대로라면 이렇게 arr[0~4] 까지 입력해야합니다.

그런데 배열을 이용하면 아래 이미지와 같이 간단히 할수 있습니다.


int arr[5] = {10,20,30,40,50}; 이 한줄이면 위에 여러줄쓸거를 생략하고 간단하게 나타낼수 있다.

여기까지는 이해하기 쉽다. 하지만 응용하면서 배열을 이용하면 점점 머리가 복잡해진다.



다차원 배열


다차원 배열은 원소 접근시 두 개 이상의 인덱스를 사용하는 배열이라고 한다.


예를 들어 학생 5명의 2과목 점수를 저장해야 한다고 생각해보자. 한 학생마다 2과목의점수를 저장해야하고,

학생이 5명이므로 모두 10개의 점수를 저장해야한다. 두 과목의 점수를 저장하려면 크기가 2인 int 배열을 선언해야한다.

이 int 배열이 다시 학생수 10명만큼 필요하므로 2x5의 배열이 필요하게 된다. 이럴때 다차원 배열을 이용하면 편리하다.




다차원 배열의 기본형식을 알아보자


데이터형 배열명 [크기1] [크기2];



이차원 배열을 선언하려면 배열의 크기를 2개 사용해야 한다. 

예를 들어 int data[2][3]; 은 int형을 2X3개, 총 6개의 원소를 갖는다.


일차원 배열은 원소에 접근할 때 인덱스를 하나만 사용하고, 이차원 배열은 두 개 사용한다.

인덱스를 여러 개 사용할 때는 가장 오른쪽 부터 인덱스가 증가되고, 가장오른쪽 인덱스가 다 증가되면

다시 그 왼쪽에 있는 인덱스가 증가된다.


short data [ 2 ][ 3 ] ;


data [ 0 ] [ 0 ] = 1;

data [ 0 ] [ 1 ] = 2;

data [ 0 ] [ 2 ] = 3;


data [ 1 ] [ 0 ] = 4;

data [ 1 ] [ 1 ] = 5;

data [ 1 ] [ 2 ] = 1;


이렇게 3이니깐 오른쪽부터 2까지 채워지고 왼쪽이 채워진다.


위 개념을


이차원배열의 제2크기 개수만큼씩 {}로 묶어서

short data[2][3] = { {1,2,3}, {4,5,6} };


제2크기 개수만큼 {}로 묶지않고. 일차원배열처럼 초기값만 나열할수있다.

short data[2][3] = {1,2,3,4,5,6};


여기서 주의할점은

int a[ ][2] = {1, 2, 3, 4, 5, 6};     <-------int a[3][2];로 할당된다

int b[3][ ] = {1, 2, 3, 4, 5, 6};     <-------컴파일 에러


두번째꺼는 몇묶음인지 알수없기 때문에 컴파일 에러가 뜬다.




여기까지 배열의 기본이라고 할수있는 배열을 기본형식 들을 알아보았다.

이것을 활용하여 다양한 코딩을 할수있게 연습하면좋을것같다.





댓글
댓글쓰기 폼