▩ 다차원 배열
- 1차원배열의 연속적인 형태
- 논리적으로 테이블의 구조를 가지고 있으나 메모리상으로는 1차원배열의 연속임
- 배열 처리시 일반적으로 for문이 2개이상 사용되는 경우가 많음
- 배열명은 배열의 첫 요소의 주소를 가지고 있으나 상수형태임으로 포인터 변수처럼 배열의 주
소를 증감할 수 없음
1. 2차원 배열
- 자료형 배열 이름[첨자1, 행][첨자2, 열]
- 2차원 배열의 선언
. int arr[3][3];
. char arr[3][3] =
{
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'},
};
2. 3차원 배열
- 자료형 배열 이름[첨자1, 면][첨자2, 행][첨자3, 열]
- 3차원 배열의 선언
int arr[2][3][4] =
{
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{51, 52, 53, 54},
{55, 56, 57, 58},
{59, 60, 61, 62}
}
};
▩ 다차원 배열 예제
>>>>> 2차원 배열의 사용
#include <stdio.h>
#include <conio.h>
void main() {
int arr[3][4];
int k, m;
for(k=0; k<3; k++) {
for(m=0; m<4; m++){
arr[k][m]=k+m;
// printf("arr[%d][%d]=%d ", k, m, k+m);
printf("k=%d m=%d k+m=%d / ", k, m, k+m);
}
printf("\n");
}
printf("\n");
for(k=0; k<3; k++) {
for(m=0; m<4; m++){
printf("arr[%d][%d] = %d ", k, m, arr[k][m]);
}
printf("\n");
}
getch();
}
UP!!!▷ 배열에 2의 배수로 입력되어 출력되도록 수정하세요.
>>>>> 2차원 배열에 값을 입력받아 역순으로 출력하는 프로그램
#include <stdio.h>
#include <conio.h>
void main() {
int arr[2][3];
int k, m;
for(k=0; k<2; k++) {
for(m=0; m<3; m++) {
printf("arr[%d][%d]의 값을 입력하세요 : ", k, m);
scanf("%d", &arr[k][m]);
}
}
for(k=1; k>=0; k--) {
for(m=2; m>=0; m--){
printf("arr[%d][%d] = %d ", k, m, arr[k][m]);
}
printf("\n");
}
printf("\n");
printf("for문이 끝난 후의 k, m값:k=%d m=%d\n", k, m);
getch();
}
>>>>> 2차원 배열의 초기화 1
#include <stdio.h>
#include <conio.h>
void main() {
char arr[3][3] =
{
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'},
};
int k, m;
for(k=0; k<3; k++) {
for(m=0; m<3; m++){
printf("arr[%d][%d] = %c ", k, m, arr[k][m]);
}
printf("\n");
}
getch();
}
>>>>> 2차원 배열의 초기화 2
#include <stdio.h>
#include <conio.h>
void main() {
char arr[3][3] =
{
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'},
};
int k, m;
printf("* 원래의 값 * ===============================\n");
for(k=0; k<3; k++) {
for(m=0; m<3; m++){
printf("arr[%d][%d] = %c ", k, m, arr[k][m]);
}
printf("\n");
}
printf("* 변경된 값 * ===============================\n");
for(k=0; k<3; k++) {
for(m=2; m>=0; m--){
printf("arr[%d][%d] = %c ", k, m, arr[k][m]);
}
printf("\n");
}
getch();
}
>>>>> 3차원 배열의 사용
#include <stdio.h>
#include <conio.h>
void main() {
int arr[2][3][4] =
{
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{51, 52, 53, 54},
{55, 56, 57, 58},
{59, 60, 61, 62}
}
};
int k, m, n;
for(k=0; k<2; k++) {
for(m=0; m<3; m++) {
for(n=0; n<4; n++){
printf("arr[%d][%d][%d] = %d ", k, m, n, arr[k][m][n]);
}
printf("\n");
}
printf("\n");
}
getch();
}