15. 다음은 C언어 프로그램이다. 실행 결과를 쓰시오.
#include
struct good {
char name[10];
int age;
};
void main(){
struct good s[] = {"Kim",28,"Lee",38,"Seo",50,"Park",35};
struct good *p;
p = s;
p++;
printf("%sn", p-> name);
printf("%sn", p-> age);
}
이 C언어 프로그램에서는 구조체 배열을 사용하고, 포인터를 통해 배열 요소를 순차적으로 접근하여 값을 출력하는 구조입니다. 각 부분을 분석해보고, 실행 결과를 도출해보겠습니다.
1. 구조체 정의
c
- 구조체 good은 두 개의 멤버를 가집니다:
- name: 크기가 10인 문자열 배열.
- age: 정수형 값으로 나이를 나타냅니다.
2. 구조체 배열 선언
struct good s[] = {"Kim", 28, "Lee", 38, "Seo", 50, "Park", 35};
- 구조체 배열 **s**는 네 개의 구조체를 가집니다:
- 첫 번째 요소: name = "Kim", age = 28
- 두 번째 요소: name = "Lee", age = 38
- 세 번째 요소: name = "Seo", age = 50
- 네 번째 요소: name = "Park", age = 35
3. 포인터 사용 및 이동
struct good *p; p = s; p++;
- 포인터 p는 구조체 배열 s의 첫 번째 요소를 가리킵니다.
- p++: 이 문장은 포인터 p를 다음 요소로 이동시킵니다. 즉, 이제 p는 s[1], 즉 두 번째 구조체를 가리킵니다.
4. 구조체 멤버 접근
printf("%sn", p->name); printf("%dn", p->age);
- p->name: 포인터 p가 가리키는 두 번째 구조체의 name 값을 출력합니다.
- 이때, p는 s[1]을 가리키고 있으므로 s[1].name은 "Lee"입니다.
- p->age: 포인터 p가 가리키는 두 번째 구조체의 age 값을 출력합니다.
- 이때 s[1].age는 38입니다.
5. 결과 출력
- 첫 번째 출력: p->name → "Lee"
- 두 번째 출력: p->age → 38