배열(Array)은 여러 개의 관련된 데이터를 하나의 공통된 이름으로 묶어 저장하는 자료 구조입니다. 같은 자료형의 값들을 연속된 메모리 공간에 순서대로 보관할 수 있어, 반복문과 함께 사용하면 대량의 데이터를 효율적으로 처리할 수 있습니다.
배열 선언 문법
배열을 선언하는 기본 문법은 다음과 같습니다.
datatype array_name [size];
예를 들어 int a[5];처럼 선언하면 정수형 변수 5개를 담을 수 있는 배열이 생성됩니다.
배열의 종류
배열은 차원의 수에 따라 크게 세 가지로 분류할 수 있습니다.
- 1차원 배열(One-dimensional array)
- 2차원 배열(Two-dimensional array)
- 다차원 배열(Multi-dimensional array)
배열의 초기화 방법
C 언어에서 배열은 두 가지 방식으로 초기화할 수 있습니다.
- 컴파일 시간 초기화: 코드 작성 단계에서 중괄호
{ }안에 값을 직접 나열하여 초기화합니다. - 런타임 초기화: 프로그램 실행 중 사용자 입력 등을 통해 배열 요소에 값을 할당합니다.
다차원 배열(Multi-dimensional Array)이란?
- C 언어는 3차원 또는 그 이상의 배열도 허용합니다.
- 배열이 가질 수 있는 차원의 정확한 상한은 컴파일러마다 다르며, 컴파일러가 결정합니다.
다차원 배열 선언 문법
다차원 배열을 선언하는 일반적인 문법은 다음과 같습니다.
datatype arrayname [size1] [size2] ----- [sizen];
예시:
- 3차원 배열 선언 −
int a[3][3][3];
이 배열이 담을 수 있는 전체 요소의 개수는 각 차원 크기의 곱으로 계산됩니다.
요소 개수 = 3 × 3 × 3 = 27개
다차원 배열 예제 프로그램 1
다음은 3차원 배열을 선언하고 중첩 반복문으로 모든 요소를 출력하는 C 프로그램입니다.
#include<stdio.h>
main ( ){
int a[2][2][2] = {1,2,3,4,5,6,7,8};
int i,j,k;
printf ("elements of the array are");
for ( i=0; i<2; i++){
for (j=0;j<2; j++){
for (k=0;k<2; k++){
printf("%d", a[i][j][k]);
}
}
}
}실행 결과
Elements of the array are : 1 2 3 4 5 6 7 8
다차원 배열 예제 프로그램 2
이번에는 학생 데이터를 저장하는 3차원 배열을 활용한 예제입니다. 각 인덱스가 의미하는 바는 다음과 같습니다.
- 첫 번째 인덱스(tab): 반(그룹)
- 두 번째 인덱스(row): 학생
- 세 번째 인덱스(col): 과목 점수
#include<stdio.h>
int main(){
int tab, row, col;
int students[3][3][2] = { { {1, 2}, {4, 5}},{ {2, 4}, {3, 5} },{ {7,8},{9,3}}};
for (tab = 0; tab < 3; tab++){
for (row = 0; row < 3; row++){
for (col =0; col < 2; col++){
printf("students[%d][%d][%d]= %d\n", tab, row, col,
students[tab][row][col]);
}
}
}
return 0;
}실행 결과
students[0][0][0]= 1 students[0][0][1]= 2 students[0][1][0]= 4 students[0][1][1]= 5 students[0][2][0]= 0 students[0][2][1]= 0 students[1][0][0]= 2 students[1][0][1]= 4 students[1][1][0]= 3 students[1][1][1]= 5 students[1][2][0]= 0 students[1][2][1]= 0 students[2][0][0]= 7 students[2][0][1]= 8 students[2][1][0]= 9 students[2][1][1]= 3 students[2][2][0]= 0 students[2][2][1]= 0
출력 결과에서 값이 0으로 표시되는 부분은 초기화 목록에 해당 인덱스의 값이 제공되지 않았기 때문입니다. C 언어에서는 명시적으로 초기화되지 않은 배열 요소가 자동으로 0으로 채워지므로, 이러한 결과가 나타나는 것입니다.