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;
}
답
더보기
10
해설
코드 | 실행순서 및 해석 | ||
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 |
'자격증 > 정보처리기사 실기 - 기출문제' 카테고리의 다른 글
[정보처리기사 실기] 2022년 2회 17 - 프로그래밍 [JAVA] (0) | 2025.07.23 |
---|---|
[정보처리기사 실기] 2022년 2회 16 - 프로그래밍 [C] 포인터 (0) | 2025.07.23 |
[정보처리기사 실기] 2022년 2회 14 - 경로 제어 프로토콜 (0) | 2025.07.23 |
[정보처리기사 실기] 2022년 2회 13 - 프로그래밍 [Python] (0) | 2025.07.23 |
[정보처리기사 실기] 2022년 2회 12 - SQL (1) | 2025.07.22 |