카테고리 없음

[C언어] 211-15

codecodekode 2024. 10. 18. 21:40

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**는 네 개의 구조체를 가집니다:
    1. 첫 번째 요소: name = "Kim", age = 28
    2. 두 번째 요소: name = "Lee", age = 38
    3. 세 번째 요소: name = "Seo", age = 50
    4. 네 번째 요소: 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