다음 C 코드를 수행하면 4개의 값이 출력된다. 출력 값 중 나머지 3… | [7급 국가직 자료구조론] 22년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 22년 1회차
다음 C 코드를 수행하면 4개의 값이 출력된다. 출력 값 중 나머지 3개와 다른 값을 출력하는 C 코드의 라인 번호는?
| 라인 번호 | C 코드 |
|---|---|
| 1 | #include <stdio.h> |
| 2 | |
| 3 | int main() { |
| 4 | int array[] = {0,1,2}; |
| 5 | int *p = array+2; |
| 6 | |
| 7 | printf("%d\n", *(p-1)); |
| 8 | printf("%d\n", *p-1); |
| 9 | printf("%d\n", *(p--)); |
| 10 | printf("%d\n", *p); |
| 11 | } |
1
7
2
8
3
9
4
10
해설
나머지와 다른 값을 출력하는 것은 *(p--)를 출력하는 줄이다.
p는 array+2로 값 2를 가리킨다. *(p-1)은 array[1]인 1, *p-1은 2−1인 1이다. *(p--)는 후위 감소라 현재 위치의 2를 출력한 뒤 p가 array+1로 옮겨지고, 이어지는 *p는 1이다.
- *(p-1): 한 칸 앞 원소의 값 1을 출력한다.
- *p-1: 역참조가 먼저라 2에서 1을 뺀 1을 출력한다.
- 마지막 *p: 앞 줄의 감소가 반영되어 1을 출력한다.
오류나 개정된 내용이 보이면 알려주세요