동일한 유형의 자료를 연속된 메모리 공간에 저장하고 이를 하나의 이름으로 관리할 수 있는 자료구조
배열 내의 각각의 요소는 0번부터 시작하는 번호를 이용해 접근할 수 있다.
접근에 사용되는 번호를 첨자 또는 인덱스라고 부른다.
선언
배열을 선언할 때는 자료형과 배열명을 지정하고, 크기(개수)를 지정한다.
배열의 크기(개수)는 지정할 수도, 지정하지 않을 수(생략)도 있다.
다중배열 선언시, 가장 바깥 배열의 크기는 생략할 수 있지만, 안쪽 배열의 크기는 지정해야 한다.
1
2
3
4
5
6
7
// 선언 문법자료형배열명[크기];// 선언과 동시에 초기화자료형배열명[크기]={요소1,요소2,...};// 예시inta[5];intb[]={1,2,3,4,5};
자료형 : 배열에 담길 요소의 자료형
자료형은 C언어의 기본 자료형이나 열거형, 구조체형, 공용체형, 포인터형 등이 가능하다.
배열명 : 명칭 정의 규칙에 따라 만든 배열의 이름
개수 : 배열의 크기를 나타내는 0보다 큰 값을 갖는 정수형 값 또는 상수식
배열의 개수는 생략할 경우, 초깃값으로 지정된 값의 개수로 정해진다.
배열의 차원
배열의 요소가 나열되는 구조를 뜻한다.
1차원 배열: 배열의 요소가 한 줄로 나열됨
2차원 배열: 배열의 요소가 행과 열로 나열됨
3차원 배열: 배열의 요소가 3차원으로 나열됨
1
2
3
4
5
6
7
8
// 1차원 배열 inta[5];// 2차원 배열 intb[2][3];// 3차원 배열 intc[2][2][2];
배열의 이름
배열의 이름만 사용할 경우, 이는 배열의 시작 위치를 나타낸다.
1
2
3
4
5
6
7
8
voidmain(){inta[5]={1,2,3,4};printf("%p\n",(void*)a);// 배열 a의 주소 출력printf("%p",&a[0]);// 배열 a의 첫 번째 요소 주소 출력}// >> 00000000005FFE20// >> 00000000005FFE20
배열의 인덱스
첨자의 범위는 0 ~ (개수-1) 까지이다.
배열의 특정 요소에 접근하려면 배열명[인덱스]의 형식으로 접근한다.
배열의 앞, 뒤에 다른 자료가 배치될 수 있다. 따라서 인덱스를 통해 접근할 때는 배열 밖을 접근하지 않도록 주의해야 한다.
// 일반 변수를 사용하는 경우 max=data0;if(max<data1)max=data1;if(max<data2)max=data2;if(max<data3)max=data3;if(max<data4)max=data4;if(max<data5)max=data5;if(max<data6)max=data6;if(max<data7)max=data7;...
1
2
3
4
5
6
// 배열을 사용하는 경우 intdata[8]={data0,data1,data2,data3,data4,data5,data6,data7};max=data[0];for(inti=1;i<8;i++){if(max<data[i])max=data[i];}
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
댓글 남기기