49.5 연습문제: 학생 구조체 포인터에 메모리 할당하기

학생 구조체 Student가 정의되어 있습니다. 다음 소스 코드를 완성하여 학생 정보가 출력되게 만드세요.

practice_struct_alloc_memory.c

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

struct Student {
    char name[20];
    int grade;
    int class;
    float average;
};

int main()
{
    struct Student *s1 = ___________________________;

    _______________________________
    ________________________________
    ________________________________
    ________________________________

    printf("이름: %s\n", s1->name);
    printf("학년: %d\n", s1->grade);
    printf("반: %d\n", s1->class);
    printf("평균점수: %f\n", s1->average);

    free(s1);

    return 0;
}

실행 결과

이름: 고길동
학년: 1
반: 3
평균점수: 65.389999

정답

 malloc(sizeof(struct Student))


strcpy(s1->name, "고길동");
s1->grade = 1;
s1->class = 3;
s1->average = 65.389999f;

해설

s1은 구조체 포인터이므로 malloc 함수로 구조체 크기만큼 메모리를 할당합니다. 이때 구조체 크기는 sizeof(struct Student)와 같이 구합니다.

학생 정보가 출력되어야 하므로 ->로 각 멤버에 접근하여 값을 저장해줍니다(문자열은 strcpy 함수를 사용하면 됩니다).