배열

개념

  • 동일한 유형의 자료연속된 메모리 공간에 저장하고 이를 하나의 이름으로 관리할 수 있는 자료구조
  • 배열 내의 각각의 요소는 0번부터 시작하는 번호를 이용해 접근할 수 있다.
  • 접근에 사용되는 번호를 첨자 또는 인덱스라고 부른다.

선언

  • 배열을 선언할 때는 자료형배열명을 지정하고, 크기(개수)를 지정한다.
  • 배열의 크기(개수)는 지정할 수도, 지정하지 않을 수(생략)도 있다.
  • 다중배열 선언시, 가장 바깥 배열의 크기는 생략할 수 있지만, 안쪽 배열의 크기는 지정해야 한다.
1
2
3
4
5
6
7
// 선언 문법
자료형 배열명[크기];
// 선언과 동시에 초기화
자료형 배열명[크기] = {요소1, 요소2, ...};
// 예시
int a[5];
int b[] = {1, 2, 3, 4, 5};
  • 자료형 : 배열에 담길 요소의 자료형
  • 자료형은 C언어의 기본 자료형이나 열거형, 구조체형, 공용체형, 포인터형 등이 가능하다.
  • 배열명 : 명칭 정의 규칙에 따라 만든 배열의 이름
  • 개수 : 배열의 크기를 나타내는 0보다 큰 값을 갖는 정수형 값 또는 상수식
  • 배열의 개수는 생략할 경우, 초깃값으로 지정된 값의 개수로 정해진다.

배열의 차원

  • 배열의 요소가 나열되는 구조를 뜻한다.
  • 1차원 배열: 배열의 요소가 한 줄로 나열됨
  • 2차원 배열: 배열의 요소가 행과 열로 나열됨
  • 3차원 배열: 배열의 요소가 3차원으로 나열됨
1
2
3
4
5
6
7
8
// 1차원 배열  
int a[5];

// 2차원 배열  
int b[2][3];

// 3차원 배열  
int c[2][2][2];

배열의 이름

  • 배열의 이름만 사용할 경우, 이는 배열의 시작 위치를 나타낸다.
1
2
3
4
5
6
7
8
void main() {
    int a[5] = {1, 2, 3, 4};
    printf("%p\n", (void*)a); // 배열 a의 주소 출력
    printf("%p", &a[0]);      // 배열 a의 첫 번째 요소 주소 출력
}

// >> 00000000005FFE20
// >> 00000000005FFE20

배열의 인덱스

  • 첨자의 범위는 0 ~ (개수-1) 까지이다.
  • 배열의 특정 요소에 접근하려면 배열명[인덱스]의 형식으로 접근한다.
  • 배열의 앞, 뒤에 다른 자료가 배치될 수 있다. 따라서 인덱스를 통해 접근할 때는 배열 밖을 접근하지 않도록 주의해야 한다.
1
2
3
4
5
6
7
int main(){
    int a[5] = {1, 2, 3, 4, 5};
    int b = 7;
    printf("a[3] : %d\n", a[3]);
    printf("a[%d] : %d\n", b, a[b]);
    return 0;
}
1
2
a[3] : 4
a[7] : 587713569  # 배열 밖을 접근한 것이다.

일반 변수 처리와 배열 처리의 비교

  • 일반 변수를 통해 처리하는 것보다 훨씬 효율적으로 다수의 자료를 처리할 수 있다.
1
2
3
4
5
6
7
8
9
10
// 일반 변수를 사용하는 경우  
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
// 배열을 사용하는 경우  
int data[8] = {data0, data1, data2, data3, data4, data5, data6, data7};
max = data[0];
for (int i = 1; i < 8; i++) {
    if (max < data[i]) max = data[i];
}

Reference

C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)

Comments