✅ 목표 (Goal)

잘 이해해보자.

✅ T형이 된다면…

🔹 T형이 된다면 (당연히) T* 도 된다.

T형 포인터를 인자로 받을수 있다.

T형 포인터를 리턴할수도 있다.

T형 포인터를 인자로 받고, return 할수도 있다.

🔹 T형이 된다는 말은 T[]도 된다는 말이다.

T가 int라면 int형 배열이고

T가 함수라면, 함수 포인터 배열도 된다는 말이다.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

// 연습용으로, T형을 하나 만들었다.
// T라는 이름보다, foo_t라는 이름으로 변경
typedef struct _foo_t {
	int a;
	int b;
} foo_t;

void write_foo(foo_t foo) {
	printf("foo.a=%d\\r\\n", foo.a);
	printf("foo.b=%d\\r\\n", foo.b);
}

foo_t read_foo() {
	foo_t foo;
	foo.a = 1;
	foo.b = 2;
	return foo;
}

int main() {
	foo_t foo1;
	foo1.a = 11;
	foo1.b = 22;
	write_foo(foo1);

	foo_t foo2;
	foo2 = read_foo();
	printf("foo2.a=%d\\r\\n", foo2.a);
	printf("foo2.b=%d\\r\\n", foo2.b);

	return 0;
}

🔹 T를 함수로 바꾸면, 함수를 받을수도 있다.

함수 포인터를 인자로 받을수 있다.

함수 포인터를 리턴할수도 있다.

함수 포인터를 인자로 받고, return 할수도 있다.