자격증/정보처리기사 실기 - 기출문제

[정보처리기사 실기] 2022년 2회 16 - 프로그래밍 [C] 포인터

쏠솔랄라 2025. 7. 23. 14:06

 

 

 

16 다음 C 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)

#include <stdio.h>
int main() {
	int a[4] = {0, 2, 4, 8};
	int b[3];
	int* p;
	int sum =0;
	for(int i=1; i<4; i++) {
		p=a+i;
		b[i-1]=*p-a[i-1];
		sum=sum+b[i-1]+a[i];
	}
	printf("%d", sum);
}

 

 

 

 

 

 

해설

코드 실행순서 및 해석
1 #include <stdio.h>    
2 int main() { 1 실행
3      int a[4] = {0, 2, 4, 8}; 2 정수형 배열 a 선언
4      int b[3]; 3 정수형 배열 b 선언
5      int* p; 4  
6      int sum =0; 5  
7      for(int i=1; i<4; i++) {    
8           p=a+i;    
9           b[i-1]=*p-a[i-1];    
10           sum=sum+b[i-1]+a[i];    
11      }    
12      printf("%d", sum);    
13 }    

 

  [0] [1] [2] [3]
a 0 2 4 8
  [0] [1] [2]
b 2 2 4
  주소 메모리
    4byte 4byte 4byte 4byte
         
a 1000 0 2 4 8
    a a+1 a+2 a+3
    1000 1004 1008 1012
         
  9999        
i p=a+i p b[i-1]=*p-a[i-1]
*p의 값은 p가 가리키고 있는 주소의 값
sum+b[i-1]+a[i]
1 a+1 1004 b[0]=*p-a[0]
=2-0=2
0+b[0]+a[1]
=0+2+2=4
2 a+2 1008 b[1]=*p-a[1]
=4-2=2
4+b[1]+a[2]
=4+2+4=10
3 a+3 1012 b[2]=*p-a[2]
=8-4=4
10+b[2]+a[3]
= 10+4+8=22