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

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

쏠솔랄라 2025. 7. 23. 11:47

 

 

 

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

#include <stdio.h>
int len(char* p);

int main() {
	char* p1 = "2022";
	char* p2 = "202207";
	int a = len(p1);
	int b = len(p2);
	printf("%d", a+b);
}

int len(char* p) {
	int r = 0;
	while(*p != '\0') {
		p++;
		r++;
	}
	return r;
}

 

 

 

 

 

 

해설

코드 실행순서 및 해석
1 #include <stdio.h>    
2 int len(char* p);   정수형 len 함수 선언
3 int main() { 1 실행
4      char* p1 = "2022"; 2 문자형 포인터 변수 p1을 선언하고 2022로 초기화
5      char* p2 = "202207"; 3 문자형 포인터 변수 p2를 선언하고 202207로 초기화
6      int a = len(p1); 4
11
len(p1)호출
= 4 반환
7      int b = len(p2); 12
19
len(p2)호출
= 6 반환
8      printf("%d", a+b); 20 4+6=10
9 }    
10 int len(char* p) { 5
13
호출
11      int r = 0; 6
14
정수 r 을 0으로 선언
12      while(*p != '\0') { 7
15
\0이 아닐 때까지 반복
13           p++; 8
16
 
14           r++; 9
17
 
15      }    
16      return r; 10
18
r=4 반환
r=6 반환
17 }    

 

주소 메모리
0000              
             
1000 ‘2’ ‘0’ ‘2’ ‘2’ \0    
  p p+1 p+2 p+3 p+4    
  1000 1001 1002 1003 1004    
             
2000 ‘2’ ‘0’ ‘2’ ‘2’ ‘0’ ‘7’ \0
  p p+1 p+2 p+3 p+4 p+5 p+6
  2001 2002 2003 2004 2005 2006 2007
             
9999              

 

문자열 2022가 있는 곳의 주소를 p1이 가리킨다

p1
1000

 

문자열 202207이 있는 곳의 주소를 p2가 가리킨다

p2
2000

 

6.

p r
1000 0
1001 1
1002 2
1003 3
1004 4

 

7.

p r
1000 0
1001 1
1002 2
1003 3
1004 4
1005 5
1006 6