65.5 연습문제: 좌표 설정 함수 만들기

다음 소스 코드를 완성하여 좌표를 설정하는 함수를 만드세요.

practice_parameter_struct_pointer.c

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

struct Point2D {
    int x;
    int y;
};

____________________________________________________
...
____________________________________________________

int main()
{
    struct Point2D *p1 = malloc(sizeof(struct Point2D));

    setPoint2D(p1, 10, 20);

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

    free(p1);

    return 0;
}

실행 결과

10 20

정답

void setPoint2D(struct Point2D *p, int x, int y)
{
    p->x = x;
    p->y = y;
}

해설

구조체 포인터 p1을 선언하고 메모리를 할당했습니다. 그리고 함수 setPoint2D를 호출할 때 구조체 포인터와 정숫값 두 개를 전달했습니다. 따라서 setPoint2D는 구조체 포인터와 두 정수를 매개변수로 사용하므로 void setPoint2D(struct Point2D *p, int x, int y)와 같이 정의해줍니다. 함수 안에서는 포인터 p의 멤버에 접근하여 매개변수로 받은 xy를 저장해주면 됩니다.