본문 바로가기
전산 관련 시험/프로그래밍(C, JAVA, Python)

[C] 프로그래밍 언어 (23.3 04)

by 응_비 2024. 10. 5.
#include <stdio.h>

struct insa {
    char name[10];
    int age;
    struct insa* impl_a;
    struct insa* impl_b;
};

int main() {
    struct insa p1 = { "Kim", 28, NULL, NULL };
    struct insa p2 = { "Lee", 36, NULL, NULL };
    struct insa p3 = { "Park", 41, NULL, NULL };

    p1.impl_a = &p2;
    p2.impl_b = &p3;

    printf("%s\n", p1.impl_a->name);   // "Lee" 출력
    printf("%d", p2.impl_b->age);      // 41 출력

    return 0;
}

주어진 C 언어 프로그램은 구조체와 포인터를 사용하여 데이터를 처리하는 코드입니다. 분석해보면, 구조체 insa는 이름(name), 나이(age), 그리고 insa 구조체를 가리키는 포인터 멤버들을 가지고 있습니다.

프로그램 설명:

struct insa {
    char name[10];
    int age;
    struct insa* impl_a;
    struct insa* impl_b;
};

1. 구조체 정의: insa 구조체는 name 배열(문자열 저장용), age(나이 저장용), impl_a와 impl_b라는 두 개의 insa 포인터 멤버를 포함하고 있습니다.
2. 메인 함수:
• p1, p2, p3는 각각 “Kim”, “Lee”, “Park”이라는 이름과 나이를 가지며, 각 구조체의 포인터 멤버들이 서로를 가리키도록 설정되어 있습니다.
• p1.impl_a는 p2를 가리키고, p2.impl_b는 p3를 가리킵니다.

struct insa p1 = { "Kim", 28, NULL, NULL };
struct insa p2 = { "Lee", 36, NULL, NULL };
struct insa p3 = { "Park", 41, NULL, NULL };

p1.impl_a = &p2;
p2.impl_b = &p3;

3. 출력 부분:

printf("%s\n", p1.impl_a->name);   // "Lee"
printf("%d", p2.impl_b->age);      // 41

• p1.impl_a->name는 p1의 impl_a가 p2를 가리키고 있으므로, p2.name, 즉 “Lee”가 출력됩니다.
• p2.impl_b->age는 p2의 impl_b가 p3를 가리키고 있으므로, p3.age, 즉 41이 출력됩니다.

실행 결과:

Lee
41

이 프로그램은 구조체 멤버와 포인터를 이용해 데이터를 접근하고 출력하는 예시입니다.

댓글