49.6 연습문제: 3차원 좌표 구조체 포인터에 메모리 할당하기

3차원 좌표 구조체 _Point3D가 정의되어 있습니다. 다음 소스 코드를 완성하여 10.000000 20.000000 30.000000이 출력되게 만드세요.

practice_typedef_struct_alloc_memory.c

#include <stdio.h>
#include <stdlib.h>

typedef struct _Point3D {
    float x;
    float y;
    float z;
} Point3D;

int main()
{
    Point3D *p1 = __________________________

    _____________
     _____________
     _____________

    printf("%f %f %f\n", p1->x, p1->y, p1->z);

    free(p1);

    return 0;
}

실행 결과

10.000000 20.000000 30.000000

정답

 malloc(sizeof(Point3D));

p1->x = 10.0f;
p1->y = 20.0f;
p1->z = 30.0f;

해설

typedef를 사용하여 구조체 별칭 Point3D을 정의했으므로 Point3D *p1 = malloc(sizeof(Point3D));처럼 포인터를 선언하고 메모리를 할당합니다.

10 20 30이 출력되어야 하므로 ->를 사용하여 x에는 10.0, y에는 20.0, z에는 30.0을 할당하면 됩니다.