다차원 배열의 형태
int score[3][4]라는 다차원 배열을 시각화하면 아래와 같다.
[ | | | ]
[ | | | ]
[ | | | ]
배열명[i][j]은 배열요소가 j개짜리인 배열이 i개 있는 것과 같다.
다차원 배열의 주소
100 104 108 112
[ | | | ]
116 120 124 128
[ | | | ]
132 136 140 144
[ | | | ]
다차원 배열의 요소
[ s[0][0] | s[0][1] | s[0][2] | s[0][3] ]
[ s[1][0] | s[1][1] | s[1][2] | s[1][3] ]
[ s[2][0] | s[2][1] | s[2][2] | s[2][3] ]
다차원 배열의 초기화
int s[3][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
}
[ 1 | 2 | 3 | 4 ]
[ 5 | 6 | 7 | 8 ]
[ 9 | 10 | 11 | 12 ]
int s[3][4] = {{1},
{5, 6},
{9, 10, 11, 12}
}
[ 1 | 0 | 0 | 0 ]
[ 5 | 6 | 0 | 0 ]
[ 9 | 10 | 11 | 12 ]
int s[3][4] = {{1, 2, 3, 4, 5, 6 , 7}
[ 1 | 2 | 3 | 4 ]
[ 5 | 6 | 7 | 0 ]
[ 0 | 0 | 0 | 0 ]
또한 초기화를 할 때 다차원 배열에서 i는 생략가능하다. (배열명[i][j])
→ 한 배열당의 요소 개수는 필수로 필요하지만 총 배열의 개수는 유동적이기 떄문에
// i를 채워 놓은 것
int s[3][4] = {{1, 2, 3, 4, 5, 6 , 7}
[ 1 | 2 | 3 | 4 ]
[ 5 | 6 | 7 | 0 ]
[ 0 | 0 | 0 | 0 ]
// i를 비워 놓은 것
int s[][4] = {{1, 2, 3, 4, 5, 6 , 7}
[ 1 | 2 | 3 | 4 ]
[ 5 | 6 | 7 | 0 ]
행의 개수 구하기
행의 개수 == 총 배열의 요소 수 / 한 배열의 요소 수
행의 개수 == 12 / 4 == 3
이것을 메모리적으로 구하면
행의 개수 == sizeof(s) / sizeof(s[0])
2차원 char 배열
char s[5][10];
[ | | | | | | | | | ]
[ | | | | | | | | | ]
[ | | | | | | | | | ]
[ | | | | | | | | | ]
[ | | | | | | | | | ]
2차원 char 배열 초기화
char s[5][10] = {{'d', 'o', 'g', '\\0'},
{'r', 'a', 'b', 'b', 'i', 't'}
{'t', 'i', 'g', 'e', 'r'},
"horse"}
[ d | o | g | \\0 | | | | | | ]
[ r | a | b | b | i | t | \\0 | | | ]
[ t | i | g | e | r | \\0 | | | | ]
[ h | o | r | s | e | \\0 | | | | ]
[ | | | | | | | | | ]
만약 저 상황에서 첫번 쨰 배열의 dog를 cat으로 바꾸고 싶다면 어떻게 해야할까?
//틀린 방법(x)
s[0] = "cat";
//옳은 방법(o)
strcpy(s[0], "cat")
3차원 배열
int s[2][3][4];
// -> 4개의 요소를 가진 배열이 3개있는 다차원 배열이 2개있는 3차원 배열이다.
s[0][0][0] s[1][0][0]
[ | | | ] [ | | | ]
[ | | | ] [ | | | ]
[ | | | ] [ | | | ]
'문법관련 > C' 카테고리의 다른 글
14.2 포인터 배열 (0) | 2024.08.07 |
---|---|
13. 변수 (0) | 2024.07.04 |
12.2 문자열 연산함수 (0) | 2024.06.27 |
12.1 문자열과 포인터 (0) | 2024.06.26 |
11.3 getchar(), putchar() (0) | 2024.06.26 |