✅ 목표 (Goal)

값 객체란 무엇이고, 어디에 사용되는지 알아보자.

✅ 지역변수의 참조를 리턴하는건 위험하다.

지역 변수 및 객체의 참조를 반환(return)해서는 안된다. ★★★

함수내의 지역변수의 참조를 돌려주면 안되기 때문에

아래와 같은 방법을 사용한다.

✅ 인자에 참조를 받은후 처리하자.

하지만 대다수의 c 함수들은

위와 같이 참조를 돌려주지 않고

아래와 같이 원래 참조를 받아서 그 받은 참조에 값을 출력한다.

이를 값 객체라고 한다.

값 객체(Value Object), 출력 매개변수 란 무엇인가요?

✅ 참조를 돌려주는 매우 위험한 방법

#include <stdio.h>

typedef struct _point_t {
	int x;
	int y;
} point_t;

point_t* get_point() {
	point_t tmp_pt;
	tmp_pt.x = 11;
	tmp_pt.y = 22;
	return (&tmp_pt);
}

int main() {
	point_t* pt1 = NULL;
	pt1 = get_point();

	printf("point(x,y) = (%d,%d)\\r\\n", pt1->x, pt1->y);

	return (0);
}