다음 C 프로그램의 출력 결과는?#include <stdio.h&… | [7급 국가직 자료구조론] 25년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 25년 1회차
다음 C 프로그램의 출력 결과는?#include <stdio.h>
#include <stdlib.h>
void processArray(int* array, int size) {
int i = 0;
for(i = 0; i < size; i++) {
array[i] += i * 2;
}
}
void modifyArray(int* array) {
*(array + 1) = 10;
*(array + 3) = 20;
}
int main() {
int i = 0;
int sum = 0;
int size = 5;
int* array = (int*)malloc(size * sizeof(int));
for(i = 0; i < size; i++) {
array[i] = i;
}
processArray(array, size);
modifyArray(array);
for(i = 0; i < size; i++) {
sum += array[i];
}
free(array);
printf("Sum: %d\n", sum);
return 0;
}
1
Sum: 40
2
Sum: 48
3
Sum: 50
4
Sum: 52
해설
배열은 최종적으로 0, 10, 6, 20, 12가 되어 합은 48이다.
초기화: 0, 1, 2, 3, 4
processArray (각 원소에 2i를 더함): 0, 3, 6, 9, 12
modifyArray (포인터 연산으로 array[1]=10, array[3]=20): 0, 10, 6, 20, 12
합:modifyArray가 processArray 뒤에 호출되므로 array[1]과 array[3]은 덮어쓴 값 10, 20이 최종값이다.
오류나 개정된 내용이 보이면 알려주세요