다음 C 프로그램의 실행 결과는?#include <stdio.h&… | [7급 국가직 자료구조론] 23년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 23년 1회차
다음 C 프로그램의 실행 결과는?#include <stdio.h>
void func(int *array, int size) {
int *p = array;
*p = 100;
*(p + 2) = 100;
p = p + 1;
}
int main(int argc, char *argv[]) {
int array[5] = { 2, 4, 6, 8, 10 };
func(array, 5);
for(int i = 0; i < 5; i++)
printf("%d ", array[i]);
printf("\n");
return 0;
}
1
100 4 6 8 100
2
100 4 6 100 10
3
100 4 100 8 10
4
100 100 68 8 10
해설
실행 결과는 100 4 100 8 10이다.
func의 p는 array[0]을 가리키므로 *p = 100은 array[0]을, *(p + 2) = 100은 array[2]를 바꾼다. 마지막 p = p + 1은 지역 포인터만 옮길 뿐 배열 값에는 영향이 없다.
- 100 4 6 8 100: 마지막 원소 array[4]는 수정되지 않는다.
- 100 4 6 100 10: p + 2는 array[3]이 아니라 array[2]이다.
- 100 100 68 8 10: array[1]은 대입 대상이 아니며 원소 값이 이어 붙는 일도 없다.
오류나 개정된 내용이 보이면 알려주세요