티스토리 뷰

리눅스 C-언어 초급과정

11. 다차원 배열

다유데브 2022. 11. 16. 10:43
반응형

1) 목표

  • 다차원 배열 이해하기

2) 설명

// 배열 선언
char cbuf[5];       	// 1차원 배열
char c2buf[2][5];   	// 2차원 배열
char c3buf[2][2][5];	// 3차원 배열

    ▶ 앞에서 살펴본 배열은 1차원 배열입니다. 

         2차원 배열은 1차원 배열에 [크기]를 더 붙여주면 선언됩니다.

         3차원 배열은 2차원 배열에 [크기]를 더 붙여주면 선언됩니다.

    ▶ c2buf[2][5];라고 선언이 되면 char 타입을 5개 담을수 있는 메모리를 2개 확보하라는 의미입니다.
         [0][1][2][3][4] [0][1][2][3][4] 이렇게 2개 묶음이 생성됩니다.
         1번째는 [0][0] [0][1] [0][2] [0][3] [0][4]로 접근 가능하고
         2번째는 [1][0] [1][1] [1][2] [1][3] [1][4]로 접근 가능합니다.
         

3) 예제프로그램

    ▶ vi arr4.c

#include <stdio.h>

// 배열을 선언과 동시에 값을 할당하는 방법
int main() {
    char cbuf[2][5] = { {'h', 'e', 'l', 'l', 'o'}, {'w', 'o', 'r', 'l', 'd'} };
    int nbuf[2][5] = { {1, 2, 3, 4, 5}, {11, 12, 13, 14, 15} };
    int i, j;

    // 배열의 값을 출력해 봅니다.
    printf("----- char타입의 cbuf 출력 -----\n");
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 5; j++) {
            printf("cbuf[%d][%d]=%c\n", i, j, cbuf[i][j]);
        }
    }

    printf("----- int타입의 nbuf 출력 -----\n");
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 5; j++) {
            printf("nbuf[%d][%d]=%d\n", i, j, nbuf[i][j]);
        }
    }

    return 0;
}

    ▶ 컴파일/실행

~/c-lecture (master ✘)✭ ᐅ gcc -o arr4 arr4.c
~/c-lecture (master ✘)✭ ᐅ ./arr4
----- char타입의 cbuf 출력 -----
cbuf[0][0]=h
cbuf[0][1]=e
cbuf[0][2]=l
cbuf[0][3]=l
cbuf[0][4]=o
cbuf[1][0]=w
cbuf[1][1]=o
cbuf[1][2]=r
cbuf[1][3]=l
cbuf[1][4]=d
----- int타입의 nbuf 출력 -----
nbuf[0][0]=1
nbuf[0][1]=2
nbuf[0][2]=3
nbuf[0][3]=4
nbuf[0][4]=5
nbuf[1][0]=11
nbuf[1][1]=12
nbuf[1][2]=13
nbuf[1][3]=14
nbuf[1][4]=15
~/c-lecture (master ✘)✭ ᐅ

    ▶ 분석

  • 2차원 배열을 출력하기 위해서 for문을 2개 사용합니다.
    처음 for문은 2차원 배열 크기(2)로, for문안의 for문은 1차원 배열크기(5)로 반복합니다.

※ 강의를 진행하면서 여러차원의 배열을 사용할때 마다 설명드리겠습니다.
    여기서는 다차원 배열을 [][]로 선언하고, 인덱스를 사용해서 값에 접근할 수 있다 정도로만 이해하시면 되겠습니다.

반응형

'리눅스 C-언어 초급과정' 카테고리의 다른 글

13. 포인터  (0) 2022.11.16
12. 문자열(string)  (1) 2022.11.16
10. 배열  (0) 2022.11.16
9. do~while문  (0) 2022.11.15
8. while문  (0) 2022.11.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함