티스토리 뷰
반응형
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
링크
TAG
- 소켓
- Clang
- Member
- IPC
- Call-by-value
- #include
- Call-By-Reference
- memcpy
- 문자열
- strcpy
- Pointer
- memset
- sharetravelplan
- 리눅스
- 배열
- C언어
- #ifdef
- array
- c프로그램
- While
- 파라메타
- GCC
- struct
- #define
- 재고
- String
- 포인터
- 의유
- 전처리기
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함