다음 프로그램의 실행결과는?#include<stdio.h>v… | [9급 지방직 컴퓨터일반] 09년 1회차 기출문제 상세 페이지
1[9급 지방직 컴퓨터일반] 09년 1회차
다음 프로그램의 실행결과는?#include<stdio.h>
void main()
{
int array[] = {100, 200, 300, 400, 500};
int *ptr;
ptr = array;
printf("%d\n", *(ptr+2)+10);
}
1
200
2
210
3
300
4
310
해설
*(ptr+2)는 배열의 세 번째 원소 300을 가리키고 여기에 10을 더하므로 출력은 310이다.
ptr = array 로 포인터가 배열의 첫 원소(100)를 가리킨다. 포인터 산술에서 ptr+2는 원소 두 개만큼 뒤, 즉 array[2]의 주소이므로 *(ptr+2)는 300이다.
단항 연산자 *가 + 보다 우선하므로 *(ptr+2)+10 = 300 + 10 = 310이 된다.
- 200: ptr+1, 즉 두 번째 원소를 읽었을 때의 값이다.
- 210: 두 번째 원소에 10을 더한 값으로, 인덱스를 하나 덜 이동한 경우다.
- 300: 역참조한 값에 10을 더하는 연산을 빠뜨린 경우다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.