이전시간에는 리턴타입도 없고, 인자도 없는 형태의 함수 포인터를 다루어 보았는데,
이번 시간에는 리턴도 하고, 인자도 있는 형태의 함수 포인터를 다루어 보자.
// 리턴타입은 없고, 인자도 없는 경우
void bts(void);
// 리턴타입은 없고, 인자는 있는 경우
void exo(int a);
// 리턴타입은 있는데, 인자가 없는 경우
int ses(void);
// 리턴타입도 있고, 인자도 있는 경우
int hot(int);
// 리턴타입은 없고, 인자도 없는 경우
void (*fp_bts)(void);
// 리턴타입은 없고, 인자는 있는 경우
void (*fp_exo)(int a);
// 리턴타입은 있는데, 인자가 없는 경우
int (*fp_ses)(void);
// 리턴타입도 있고, 인자도 있는 경우
int (*fp_hot)(int);
#include <stdio.h>
void bts(void) { printf("%s\\r\\n", __FUNCTION__); }
void exo(int a) { printf("%s\\r\\n", __FUNCTION__); }
int ses(void) { printf("%s\\r\\n", __FUNCTION__); return (11); }
int hot(int a) { printf("%s\\r\\n", __FUNCTION__); return (22); }
int main() {
printf("함수 포인터를 이용하지 않고 그냥 호출\\r\\n");
bts(); // (1)
exo(33);
ses();
hot(44);
printf("\\r\\n");
printf("함수 포인터를 이용해서 호출\\r\\n");
// 함수포인터를 이용해서 호출을 해봐요.
void (*fp_bts)(void) = &bts;
void (*fp_exo)(int) = &exo;
int (*fp_ses)(void) = ses;
int (*fp_hot)(int) = hot;
(*fp_bts)();
(*fp_exo)(111);
(*fp_ses)();
(*fp_hot)(222);
printf("\\r\\n");
/*
printf("함수 포인터를 * 없이 호출\\r\\n");
fp_bts();
fp_exo(111);
fp_ses();
fp_hot(222);
printf("\\r\\n");
printf("함수를 함수 포인터처럼 호출\\r\\n");
(*bts)();
(*exo)(33);
(*ses)();
(*hot)(44);
printf("\\r\\n");
*/
return 0;
}