728x90
반응형
#include <stdio.h>
int main() {
int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int* parr[2] = {arr[1], arr[2]};
printf("%d", parr[1][1] + *(parr[1]+2) + **parr);
return 0;
}
주어진 코드를 하나씩 분석하여 출력값을 계산해보겠습니다.
코드 분석
배열 선언
1. int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- arr는 3x3 2차원 배열로, 값들은 다음과 같이 초기화됩니다:
arr[0][0] = 1, arr[0][1] = 2, arr[0][2] = 3
arr[1][0] = 4, arr[1][1] = 5, arr[1][2] = 6
arr[2][0] = 7, arr[2][1] = 8, arr[2][2] = 9
2. int* parr[2] = {arr[1], arr[2]};
- parr는 포인터 배열로, 각 요소는 int* 타입입니다.
- parr[0]은 arr[1]을 가리킵니다. 즉, parr[0]은 4, 5, 6의 배열을 가리킵니다.
- parr[1]은 arr[2]을 가리킵니다. 즉, parr[1]은 7, 8, 9의 배열을 가리킵니다.
printf 계산
- parr[1][1]:
- parr[1]은 arr[2]를 가리키므로, parr[1][1]은 arr[2][1]을 의미합니다.
- arr[2][1]은 8입니다.
- *(parr[1] + 2):
- parr[1]은 arr[2]를 가리킵니다. 즉, parr[1]은 배열 arr[2]의 첫 번째 요소를 가리키는 포인터(arr[2][0]).
- parr[1] + 2는 arr[2]의 세 번째 요소인 arr[2][2]를 가리킵니다.
- *(parr[1] + 2)는 arr[2][2]의 값을 의미하므로, 그 값은 9입니다.
- **parr:
- parr은 포인터 배열입니다. parr[0]은 arr[1]을 가리킵니다.
- 따라서, *parr은 arr[1]을 가리키는 포인터가 되고, **parr은 arr[1][0]을 의미합니다.
- arr[1][0]의 값은 4입니다.
최종 계산
- parr[1][1] + *(parr[1] + 2) + **parr의 값은:
- 8 (parr[1][1]) + 9 (*(parr[1] + 2)) + 4 (**parr) = 21
출력값
- 최종적으로 printf 문은 21을 출력합니다.
정답: 21
'Category > 정보처리기사' 카테고리의 다른 글
| 악성 프로그램 관련 문제 (0) | 2024.10.07 |
|---|---|
| 조인(Join)이란? (0) | 2024.10.07 |
| 정처기 네트워크 관련 용어와 개념 (1) | 2024.10.07 |
| 정규화란? (도부이결다조) (2) | 2024.10.07 |
| 서브넷 마스크로 네트워크 범위 계산하기 (0) | 2024.10.07 |