문제
다음 C 프로그램의 실행 결과는?
#include <stdio.h> void modify(int arr[], int size) { for(int i = 0; i < size; i++) { arr[i] = arr[i] * 2; } } int main() { int data[3] = {1, 2, 3}; modify(data, 3); printf("%d %d %d", data[0], data[1], data[2]); return 0; }
① 1 2 3 ② 2 4 6 ③ 1 4 9 ④ 컴파일 오류
정답
2번
해설
C언어에서 배열을 함수에 전달할 때는 배열의 주소가 전달되므로(call by reference), modify 함수에서 배열 요소를 수정하면 원본 배열이 변경된다. 각 요소에 2를 곱하므로 1→2, 2→4, 3→6이 된다. 배열 전달 방식과 포인터의 복합적 이해가 필요한 고난도 문제이다.