정보처리산업기사 실기 시험 기출 문제 - 문자 배열과 포인터
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!
문제
다음 C 프로그램이 실행되었을 때의 동작을 설명하고, 출력 결과를 예측하시오.
소스 코드 파일명: array_and_pointer.c
#include <stdio.h>
main() {
char a[3][5] = { "KOR", "HUM", "RES" };
char* pa[] = { a[0], a[1], a[2] };
int n = sizeof(pa) / sizeof(pa[0]);
for (int i = 0; i < n; i++)
printf("%c", pa[i][i]);
}
입력 예시
이 프로그램은 입력을 받지 않습니다.
출력 예시
KUE
해설
이 프로그램은 문자 배열과 포인터 배열을 초기화하고, 포인터 배열을 사용하여 특정 문자를 출력합니다.
char a[3][5] = { "KOR", "HUM", "RES" };
는 3행 5열의 문자 배열a
를 선언하고 각 행을 "KOR", "HUM", "RES"로 초기화합니다. 각 문자열 뒤에는 자동으로 널 문자('\0')가 추가됩니다.char* pa[] = { a[0], a[1], a[2] };
는 포인터 배열pa
를 선언하고a
의 각 행의 주소를 초기화하여pa
의 각 원소가a
의 각 행을 가리키게 합니다.int n = sizeof(pa) / sizeof(pa[0]);
는 포인터 배열pa
의 원소 개수를 계산하여n
에 저장합니다.sizeof(pa)
는 포인터 배열 전체의 크기를 반환하고,sizeof(pa[0])
는 배열의 한 원소, 즉 포인터의 크기를 반환합니다. 이를 나누어 배열의 길이, 즉 3을 얻습니다.for
루프를 사용하여pa
의 각 원소(즉,a
의 각 행을 가리키는 포인터)에 대해printf
함수를 사용하여 해당 행의 i번째 문자를 출력합니다. 따라서 "KOR"의 첫 번째 문자 'K', "HUM"의 두 번째 문자 'U', "RES"의 세 번째 문자 'E'를 차례대로 출력합니다.
따라서 이 프로그램의 출력 결과는 KUE
입니다. 이 프로그램은 문자 배열과 포인터 배열을 사용하는 방법과 배열의 인덱싱을 통해 특정 위치의 데이터에 접근하는 방법을 보여줍니다.