알 수 없는 사용자 2020. 1. 31. 16:29

1. 배열

 배열(array)은 여러 변수들이 같은 배열 이름으로 일정한 크기의 연속된 메모리에 저장되는 구조이다. 동일한 자료형이 여러 개 필요한 경우 유용한 자료구조이며, 선언하는 번거로움을 해소할 수 있고, 그 사용도 간편하다. 

 

배열은 한 자료형의 저장공간인 원소를 동일한 크기로 지정된 배열 크기만큼 확보한 연속된 저장공간이다. 배열도 변수이다. 그래서 배열마다 고유한 배열 이름이 필요하다. 

 

배열을 구성하는 각각의 항목을 배열의 원소라 한다. 

 

배열은 배열 이름, 원소 자료형, 배열 크기라는 요소를 가지고 있다. 그리고 배열 원소들은 첨자 번호를 통해 접근할 수 있다.

 

2. 배열선언과 사용

기본적으로 원소자료형 배열이름[배열크기]; 의 모습을 가진다. //배열선언

 

int score[10];

(배열원소는 10개이므로 10*4바이트=총 20바이트이다.)

 

배열 선언 시 대괄호 안의 수는 배열크기이다.

그러나 배열 선언이후 대뢀호 안의 수는 원소를 참조하는 첨자가 된다.

 

배열에서 유효한 첨자의 범위는 0부터 (배열 이름 크기-1)까지이다. 배열에서 첨자의 유효범위를 벗어나 원소를 참조하면 실행오류가 발생한다. 즉 배열크기가 5이면 첨자는 0부터 4까지 유효하다. 

배열 함수 내부에서 선언 후 원소에 초기값을 저장하지 않으면 쓰레기값이 저장된다.

결과:

12
23
34
-858993460
56

 

3.배열초기화

배열을 선언하면서 동시에 원소값을 쉽게 저장하는 배열 선언 초기화라는게 있다.

배열선언을 하면서 대입연산자와 중괄호를 이용하여 여러 원소값을 기술할 수 있다.

배열 선언시에만 이용기 가능하고, 배열 선언 이후에는 사용 할 수 없다.

 

원소자료형 배열이름[배열크기]={원소값1,원소값2,~~};

 

배열크기를 생략하면 자동으로 원소의 수가 배열 크기가 된다. 만일 배열 크기가 초기값 원소의 수보다 크면 지정하지 않은 원소는 자료형에 맞는 0이 저장된다. (정수형은 0,실수형은 0.0,문자형은'\0'인 널문자이다.)

반대로 배열크기가 초기값 원소의 수보다 작으면 "이니셜라이저가 너무 많습니다."라는 문법 오류가 발생한다.

 

4.이차원배열

이차원배열은 행과 열의 구조로 표현한 배열이다. 

이차원배열선언은 2개의 대괄호가 필요하다. 첫번째 대괄호는 행의 크기, 두번째는 배열의 열의 크기를 말한다.

배열선언시 행과열의 크기는 명시되어야한다. 초기값도 같이 선언시에는 행은 생략가능하다.

행의크기나 열크기와 원소참조를 위한 첨자들은 일차원배열과 똑같이 적용된다.

 

원소자료형 배열이름[배열행크기][배열 열 크기];

{1}이 첫번째 행이다. 3열이므로 1행에는 3개의 원소가 들어가야한다. 그래서 나머지 빈 원소에 0이 배정되었고,

2행에는 {1,2,3}이 차례로 원소에 배정된다.

결과를 보면

1
0
0
1
2
3

이다.

 

5.함수에서 배열 전달

함수하나 만들고! 배열초기화구문을 이용