2022 국가직9급 컴퓨터일반 7번 해설 — C 포인터와 배열

정답 ②번출제 쟁점 C 포인터와 배열발문 옳은 것 고르기

문제

다음 C 프로그램에서 밑줄 친 코드의 실행 결과와 동일한 결과를 출력하는 코드로 옳은 것만을 모두 고르 면? #include <stdio.h> int main() { int ary[5] = {10, 11, 12, 13, 14}; int *ap; ap = ary; printf(“%d”, ary[1]); return 0; } ㄱ. printf("%d", ary+1); ㄴ. printf("%d", *ap+1); ㄷ. printf("%d", *ary+1); ㄹ. printf("%d", *ap++);

  1. ㄱ, ㄴ
  2. ㄴ, ㄷ ← 정답
  3. ㄷ, ㄹ
  4. ㄴ, ㄷ, ㄹ 우선 ary 배열은 int형 변수 5개가 할당되고, ap 변수는 ary 배 열을 가리키는 배열 포인터이다. printf문은 ary배열의 첫 번째 값을 출력하므로, ary[1]의 값 11 을 출력한다. ㄴ. 포인터 ap에는 ary 배열의 첫 번째 주소가 들어간다. 따라서, *ap는 ary 배열의 첫 번째 주소에 있는 값, 즉 a[0]의 값 10을 불러오고, *ap + 1 = 10 + 1 = 11이 된다. ㄷ. 배열 변수는 뒤 괄호 부분을 생략하고 쓰면 그 자체로 포인터 변수로 사용할 수 있다. 따라서 ary는 ap과 같으며, *ary는 *ap와 같다.(ㄴ 참조) <오

선지별 해설

ㄱ, ㄴ

이 선지 진술은 틀림(X)

ㄱ은 주소값을 출력하려 하므로 11이 아니다. ㄴ과 ㄷ은 각각 10+1로 11을 출력한다.

ㄴ, ㄷ

이 선지 진술은 옳음(O)

*ap+1과 *ary+1은 모두 첫 원소 10에 1을 더해 11을 출력한다. ary+1은 주소이고 *ap++은 증가 전 첫 원소 10을 출력한다.

ㄷ, ㄹ

이 선지 진술은 틀림(X)

ㄷ은 *ary+1로 11이지만 ㄹ의 *ap++은 후위 증가가 적용되어 현재 *ap 값인 10을 출력한다. 따라서 ㄹ은 포함되지 않는다.

ㄴ, ㄷ, ㄹ 우선 ary 배열은 int형 변수 5개가 할당되고, ap 변수는 ary 배 열을 가리키는 배열 포인터이다. printf문은 ary배열의 첫 번째 값을 출력하므로, ary[1]의 값 11 을 출력한다. ㄴ. 포인터 ap에는 ary 배열의 첫 번째 주소가 들어간다. 따라서, *ap는 ary 배열의 첫 번째 주소에 있는 값, 즉 a[0]의 값 10을 불러오고, *ap + 1 = 10 + 1 = 11이 된다. ㄷ. 배열 변수는 뒤 괄호 부분을 생략하고 쓰면 그 자체로 포인터 변수로 사용할 수 있다. 따라서 ary는 ap과 같으며, *ary는 *ap와 같다.(ㄴ 참조) <오

이 선지 진술은 틀림(X)

ㄹ의 *ap++은 ap가 증가하기 전의 대상 값 10을 출력한 뒤 포인터가 이동한다. 11을 출력하는 것은 ㄴ과 ㄷ이다.

핵심 요약 (Q&A)

Q. 2022 국가직9급 컴퓨터일반 7번의 핵심 쟁점은 무엇인가?
A. 2022 국가직9급 컴퓨터일반 7번은 C 포인터와 배열에 관한 문항으로, "옳은 것"을 고르는 문제입니다.
Q. 2022 국가직9급 컴퓨터일반 7번의 정답은?
A. 정답은 ②번입니다. *ap+1과 *ary+1은 모두 첫 원소 10에 1을 더해 11을 출력한다. ary+1은 주소이고 *ap++은 증가 전 첫 원소 10을 출력한다.
🧩 프로그래밍 개념·기출 모아보기📄 2022 국가직9급 컴퓨터일반 전체 문항✏️ 이 시험 미니문제 풀기
출처: 2022 국가직9급 컴퓨터일반 기출 (원문 보존)해설 기준: 출제 당시 법령·판례 · 개정 사항은 ⚠️ 표시