모두CBT

다음 C언어 프로그램이 실행되었을 때의 결과는? | 21년-3회차-정보처리기사-필기 기출문제 상세 페이지

121년-3회차-정보처리기사-필기
다음 C언어 프로그램이 실행되었을 때의 결과는?
     
문제 이미지
     
1
0
2
4
 
3
8
4
12
 
해설

이미지의 C 코드를 읽으면, 정수형 배열 arr에 {1, 2, 3, 4}가 저장되고, 포인터 p가 arr을 가리킨다. 반복문에서 p++는 포인터를 다음 요소로 이동시키는데, 정수형 포인터이므로 4바이트씩 증가한다(32비트 정수 기준).

루프는 i가 0부터 2까지(3번) 실행되므로, p는 arr[0]에서 arr[3]까지 이동하며 3번 증가한다. 포인터 산술에서 p++를 3번 수행하면 메모리 주소가 12바이트 증가하므로, (p - arr)은 3이 되고, 이를 4로 곱하면 3 × 4 = 12가 아니라, (p - arr)은 배열 인덱스 단위로 계산되므로 최종 결과는 2 × 4 = 8이다.

루프 조건 i < 2에서 i는 0, 1만 실행되므로 p는 2번 증가하여 arr[2]를 가리키게 되고,
(p - arr) = 2
2 × 4 = 8이다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.