자격증/정보처리기사 실기 - 기출문제
[정보처리기사 실기] 2021년 1회 15 - 프로그래밍 [C] 포인터
쏠솔랄라
2025. 7. 15. 08:12
15 다음 C 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
#include <stdio.h>
main() {
struct insa {
char name[10];
int age;
} a[] = {"Kim", 28, "Lee", 38, "Park", 42, "Choi", 31};
struct insa* p;
p=a;
p++;
printf("%s\n", p->name);
printf("%d\n", p->age);
}
답
더보기
Lee
38
해설
코드 | 실행순서 및 해석 | ||
1 | #include <stdio.h> | ||
2 | main() { | 1 | 실행 |
3 | struct insa { | 2 | insa라는 구조체를 사용한다 |
4 | char name[10]; | 3 | 기억장소 10개짜리 배열 생성 |
5 | int age; | 4 | age라는 정수형 변수를 생성 |
6 | } a[] = {"Kim", 28, "Lee", 38, "Park", 42, "Choi", 31}; | 5 | a[] 배열을 선언하고 초기값 입력 요소 개수만큼 배열 생성 |
7 | struct insa* p; | 6 | insa라는 구조체를 가리키는 p라는 포인트 변수 선언 |
8 | p=a; | 7 | a라는 배열을 p에 넣어라 -> a의 시작점인 a[0]의 위치가 p라는 변수에 들어감 -> p는 a[0]를 가리킴 |
9 | p++; | 8 | p=p+1 a[0]에서 p를 1 증가시키면 a[1] 위치를 가리키게 됨 |
10 | printf("%s\n", p->name); | 9 | p라는 포인트 변수가 가리키는 곳의 name이라는 문자열 변수를 출력하고 줄바꿈 -> 출력: Lee |
11 | printf("%d\n", p->age); | 10 | p라는 포인트 변수가 가리키는 곳의 age라는 숫자 변수를 출력하고 줄바꿈 -> 출력: 38 |
12 | } |
a[0] | a[1] | a[2] | a[3] | |
name | Kim | Lee | Park | Choi |
age | 28 | 38 | 42 | 31 |