46.8 연습문제: 인적 정보 함수 만들기

다음 소스 코드를 완성하여 "Kayle", 22가 각 줄에 출력되게 만드세요.

practice_return_struct_pointer.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Person {
    char name[20];
    int age;
};

struct Person *allocPerson()
{
    struct Person *p = malloc(sizeof(struct Person));

    _______________________
    ________________________ 

    _______________________
}

int main()
{
    struct Person *p1;

    p1 = allocPerson();

    printf("%s\n", p1->name);
    printf("%d\n", p1->age);

    free(p1);

    return 0;
}

실행 결과

Kayle
22

정답


strcpy(p->name, "Kayle");
p->age = 22;

 return p;

해설

먼저 main 함수에서 allocPerson 함수를 호출하여 반환된 포인터로 "Kayle", 22를 출력하고 있습니다. 따라서 "Kayle", 22는 allocPerson 함수 안에서 저장된 값입니다.

allocPerson 함수를 보면 struct Person *allocPerson()과 같이 구조체 포인터를 반환하고, 포인터에 메모리를 할당하고 있습니다. 그러므로 메모리가 할당된 포인터에서 -> (화살표 연산자)로 name에 접근하여 strcpy 함수로 문자열 "Kayle"을 복사하고, age에는 22를 저장한 뒤 포인터를 반환하면 됩니다.