각 배열의 첫 문자를 출력 한다면 ?
이중배열
#include <stdio.h>
int main() {
const char* arr[2][2] = { {"Hello", "World"},{"Foo", "Bar"} };
printf("%c\n", arr[0][0][0]);
printf("%c\n", arr[0][1][0]);
printf("%c\n", arr[1][0][0]);
printf("%c\n", arr[1][1][0]);
}
실행결과
H
W
F
B
review
✅ 출력문에서 arr[0][0][0] 을 보면, 우선 arr[0][0] 이 출력 하는 것은 Hello이다.
| 그리고, arr[0][1] 같은 경우는 World를 출력한다.
| 문제는 뒤에 있는 [0] 인데, printf 출력문을 보면 %c 로 문자 하나를 가져오라고 하고 있다.
| 그래서 Hello 에서 [0] 을 가져온다고 생각하면 편하다. "Hello" 문자 배열에서 첫 번째 (인덱스 0)는 H이다.
이중배열
#include <stdio.h>
int main() {
const char* arr[2] = { "Hello", "World" };
printf("%c\n", arr[0][0]);
printf("%c\n", arr[1][0]);
}
실행 결과
H
W
review
✅ 위 코드도 마찬가지로, 배열은 2차원 배열이 아닌 1차원 배열이다.
| 하지만, 출력에서 보면 2차원 배열의 주소의 값을 가져오는 것 처럼 보이는데,
| 실행 결과를 보면 arr[0] = "Hello" 가 들어오고, 그 다음에 [0]은 문자열의 첫 번째 요소를 가져오는 것이다.
이중배열
#include <stdio.h>
int main() {
const char* arr[3][3] = { {"apple", "banana", "cherry"}, {"dog", "elephant", "frog"}, {"grape", "hippo", "iguana"} };
for (int i = 0; i < 3; i++) {
printf("%s\n", arr[i][0]);
}
return 0;
}
실행 결과
apple
dog
grape
review
✅ 2차원 배열을 선언하고, 초기화 하였지만 출력하는 부분에 보면 두 번째 찾는 인덱스는 0으로 고정했습니다.
| arr[i] 만 먼저 보자면
| arr[0] = {"apple", "banana", "cherry"}
| arr[1] = {"dog", "elephant", "frog"}
| 형식으로 가져오는 것을 알 수 있습니다. 여기서 문제인 [0]으로 고정 되어 있는 것은
| 큰 덩어리 묶음에서 첫 번째 인덱스 값을 가져오라는 의미입니다. 그래서 "apple" "dog" "grape" 가 출력됩니다.
quiz
☑️ arr[0][1]의 값은 ?
|
☑️ arr[1][0]의 값은 ?
|
☑️ arr[1][2]의 값은 ?
|
☑️ arr[2][1]의 값은 ?
|
2차원 배열은 아래와 같이 이해할 수 있으며, 실제로 저렇게 저장되는 것은 아닙니다.
0 | 1 | 2 | |
0 | apple | banana | cherry |
1 | dog | elephant | frog |
2 |
위 quiz에 대한 정답은 순서대로 banana, dog, frog, hippo 입니다.
출처 | 주말코딩 정보처리기사
'잡다한 공부' 카테고리의 다른 글
[정보처리기사] 정처기 실기 전위,후위, 증감 연산 (0) | 2025.02.18 |
---|---|
C언어 goto문과 continue문 (4) | 2025.01.31 |
ASCII CODE (2) | 2025.01.18 |
커스텀 자료형 typedef (6) | 2025.01.18 |
C언어 구조체 struct, 구조체 포인터 (4) | 2025.01.17 |