2022 국가직9급 컴퓨터일반 6번 해설 — C 함수 호출

정답 ④번출제 쟁점 C 함수 호출발문 옳지 않은 것 고르기

문제

C 언어에서 함수 호출 시 매개변수 전달 방법에는 값 에 의한 호출(Call by Value)과 참조에 의한 호출(Call by Reference)이 있다. C 프로그램 코드가 다음과 같을 때 설명으로 옳지 않은 것은? int get_average(int score[], int n) { int i, sum; for(i = 0; i < n; i++) sum += score[i]; return sum / n; } void main(void) { int score[3] = { 1, 2, 5 }; printf(“%d\n”, get_average(score, 3)); }

  1. 전달할 데이터의 양이 많을 경우에는 참조에 의한 호출이 효율적이다
  2. 값에 의한 호출로 전달된 데이터는 호출된 함수에서 값을 변경하더라도 함수 종료 후 해당 함수를 호출 한 상위 함수에 반영되지 않는다
  3. 값에 의한 호출은 함수 호출 시 데이터 복사가 발생 한다
  4. 위의 프로그램에서 함수 get_average()를 호출하는 데 사용한 매개변수 score는 값에 의한 호출로 처 리된다. ④ get_average() 함수는 배열을 입력값으로 받는데, 배열은 대표적 인 '참조에 의한 호출' 방법이다. <오 ← 정답

선지별 해설

전달할 데이터의 양이 많을 경우에는 참조에 의한 호출이 효율적이다

이 선지 진술은 옳음(O)

참조 전달은 데이터 전체를 복사하지 않고 주소를 통해 접근하므로 큰 자료구조에서 비용을 줄일 수 있다. C에서는 포인터를 이용해 유사하게 구현한다.

값에 의한 호출로 전달된 데이터는 호출된 함수에서 값을 변경하더라도 함수 종료 후 해당 함수를 호출 한 상위 함수에 반영되지 않는다

이 선지 진술은 옳음(O)

값 전달은 인자의 값을 복사해 매개변수에 저장한다. 따라서 매개변수를 바꾸어도 원래 변수 자체는 변하지 않는다.

값에 의한 호출은 함수 호출 시 데이터 복사가 발생 한다

이 선지 진술은 옳음(O)

값 전달에서는 실제 인자의 값이 형식 매개변수로 복사된다. 복사본을 대상으로 연산한다는 점이 핵심이다.

위의 프로그램에서 함수 get_average()를 호출하는 데 사용한 매개변수 score는 값에 의한 호출로 처 리된다. ④ get_average() 함수는 배열을 입력값으로 받는데, 배열은 대표적 인 '참조에 의한 호출' 방법이다. <오

이 선지 진술은 틀림(X)

배열 매개변수는 함수 선언에서 포인터로 조정되어 원본 배열의 원소에 접근한다. 따라서 이 예의 score는 단순한 값 복사 인자처럼 처리되지 않는다.

핵심 요약 (Q&A)

Q. 2022 국가직9급 컴퓨터일반 6번의 핵심 쟁점은 무엇인가?
A. 2022 국가직9급 컴퓨터일반 6번은 C 함수 호출에 관한 문항으로, "옳지 않은 것"을 고르는 문제입니다.
Q. 2022 국가직9급 컴퓨터일반 6번의 정답은?
A. 정답은 ④번입니다. 배열 매개변수는 함수 선언에서 포인터로 조정되어 원본 배열의 원소에 접근한다. 따라서 이 예의 score는 단순한 값 복사 인자처럼 처리되지 않는다.
🧩 프로그래밍 개념·기출 모아보기📄 2022 국가직9급 컴퓨터일반 전체 문항✏️ 이 시험 미니문제 풀기
출처: 2022 국가직9급 컴퓨터일반 기출 (원문 보존)해설 기준: 출제 당시 법령·판례 · 개정 사항은 ⚠️ 표시