[C언어] 이차원 배열
2차원 배열
2차원 배열은 '배열의 배열'입니다. 배열 안에 배열이 들어있는 구조인데요
arr [0] = a_1[0],a_1[1],a_1[2],a_1[3],a_1[4],a_1[5], arr[1] = a_2[0],a_2[1],a_2[2],a_2[3],a_2[4],a_2[5] 의 구조입니다.
2차원 배열의 초기화
위 그림처럼 2행 6열 (원소는 1,5)의 배열엔 총 12개의 값을 저장할 수 있습니다.
#include <stdio.h>
#define raw 2
#define col 6
int main () {
int i_arr[raw][col] ={0,1,2,3,4,5,6,7,8,9,10,11}; //배열의 선언 배열의 원소 크기보다 많은 양을 초기화 시켰다.
//배열에 값 대입//
for(int i = 0; i<raw;i++){
for(int j = 0; j<col; j++)
printf("i_arr[%d][%d]의 원소값: %d\n",i,j,i_arr[i][j]);
}
return 0;
}
//실행 결과
//i_arr[0][0]의 원소값: 0
//i_arr[0][1]의 원소값: 1
//i_arr[0][2]의 원소값: 2
//i_arr[0][3]의 원소값: 3
//i_arr[0][4]의 원소값: 4
//i_arr[0][5]의 원소값: 5
//i_arr[1][0]의 원소값: 6
//i_arr[1][1]의 원소값: 7
//i_arr[1][2]의 원소값: 8
//i_arr[1][3]의 원소값: 9
//i_arr[1][4]의 원소값: 10
//i_arr[1][5]의 원소값: 11
int i_arr[raw][col] ={0,1,2,3,4,5,6,7,8,9,10,11}; 처럼 총 배열 원소의 개수만큼 초기화를 할 수 있고
#include <stdio.h>
#define raw 2
#define col 6
int main () {
int i_arr[raw][col] ={{0,1,2,3,4,5},{6,7,8,9,10,11}}; //배열의 선언 배열의 원소 크기보다 많은 양을 초기화 시켰다.
//배열에 값 대입//
for(int i = 0; i<raw;i++){
for(int j = 0; j<col; j++)
printf("i_arr[%d][%d]의 원소값: %d\n",i,j,i_arr[i][j]);
}
return 0;
}
int i_arr[raw][col] ={{0,1,2,3,4,5},{6,7,8,9,10,11}}; 내부 중괄호{}를 횡단 위로 나누어서 선언이 가능합니다.
이전에 1차원 배열의 경우 int i_arr[num] ={0}; 으로 모두 0으로 초기화하는 법을 설명했는데 2차원 배열을 모두 0으로 초기화 하는 방법도 이와 같습니다.
#include <stdio.h>
#define raw 2
#define col 6
int main () {
int i_arr[raw][col] ={0}; //배열의 선언 배열의 원소 크기보다 많은 양을 초기화 시켰다.
//배열에 값 대입//
for(int i = 0; i<raw;i++){
for(int j = 0; j<col; j++)
printf("i_arr[%d][%d]의 원소값: %d\n",i,j,i_arr[i][j]);
}
return 0;
}
//i_arr[0][0]의 원소값: 0
//i_arr[0][1]의 원소값: 0
//i_arr[0][2]의 원소값: 0
//i_arr[0][3]의 원소값: 0
//i_arr[0][4]의 원소값: 0
//i_arr[0][5]의 원소값: 0
//i_arr[1][0]의 원소값: 0
//i_arr[1][1]의 원소값: 0
//i_arr[1][2]의 원소값: 0
//i_arr[1][3]의 원소값: 0
//i_arr[1][4]의 원소값: 0
//i_arr[1][5]의 원소값: 0
2차원 배열의 접근은 2중 for문을 이용하여 행, 열 순으로 접근합니다.
for(int i = 0; i<raw;i++){
for(int j = 0; j<col; j++)
printf("i_arr[%d][%d]의 원소값: %d\n",i,j,i_arr[i][j]);
}
첫 번째 for문에서 열(0,1)에 접근을 하고 해당 열에서 2번째 for문에서 행(0,1,2,3,4,5)에 접근하게 됩니다.
만약 더 높은 차원의 배열을 선언하고자 한다면 3차원 배열의 경우 배열[1ch][2ch][3ch]로 선언하고 for문은 3개를 사용하여 각 요소에 접근하면 됩니다.
'ET의 공부 > C언어' 카테고리의 다른 글
[C언어] 함수의 매개변수 배열,포인터 (0) | 2021.01.03 |
---|---|
[C언어] 포인터와 배열 (0) | 2021.01.03 |
[C언어] 배열 그리고 배열 초기화 (0) | 2020.12.29 |
[C언어] 포인터 알아보기 (0) | 2020.12.22 |
[C언어] 재귀함수의 순서역전, 10진수를 2진수로 바꾸기 (0) | 2020.12.22 |