다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h>
struct Pair {
int x;
int y;
};
int main(void) {
struct Pair values[] = {{1, 2}, {3, 4}, {5, 6}};
struct Pair *pointer = values;
struct Pair **doublePointer = &pointer;
(*doublePointer)[1] = (*doublePointer)[2];
printf("%d 그리고 %d", values[1].x, values[1].y);
return 0;
}모범답안
5 그리고 6
풀이와 판단 근거
doublePointer는 pointer의 주소를 가리킨다. pointer는 values 배열의 첫 원소를 가리키므로 (*doublePointer)[1]은 values[1], (*doublePointer)[2]는 values[2]와 같다.
C에서 같은 구조체 형식끼리 대입하면 모든 멤버 값이 복사된다. values[2]의 {5, 6}이 values[1]로 복사되므로 5 그리고 6이 최종 출력에 나타난다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 5 그리고 6와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.