개념 :
1. 함수를 가르키는 특수한 함수
2. 함수이름자체도 주소값을 가지고있다.
3. 반환형태와 매계변수를 같게 하고 (*이름) 형식으로 만들수 있다.
목표 :
기존 소스를 활용하여 Process 함수를 FunctionPointer 함수로 가르키고 하고 사용해본다.
소스코드 : main.c
#include <stdio.h>
#define MAX 256
#define type_String (unsigned char)0
#define type_Integer (unsigned char)1
struct tagStruct1
{
unsigned char type;
unsigned char szBuffer[MAX];
};
struct tagStruct2
{
char type;
int nNumber;
};
void Process(void *); // 포로토 타입 선언
void main(void)
{
//< 함수 포인터 추가
void(*FunctionPointer)(void*);
FunctionPointer = Process;//함수포인터 값 대입
//< 데이터를 선언
struct tagStruct1 Data1;
struct tagStruct2 Data2;
//Data1 정의
Data1.type = type_String;
sprintf_s(Data1.szBuffer, sizeof(Data1.szBuffer), " Type1의 데이터 입니다. 어떠한 문자열을이든 저장할수 있겠군요.");
//Data2 정의
Data2.type = type_Integer;
Data2.nNumber = 38;
void *pInput = (void*)&Data1;
FunctionPointer(pInput);
pInput = (void*)&Data2;
FunctionPointer(pInput);
return;
}
void Process(void* pData)
{
unsigned char type = *(char*)pData;
switch (type)
{
case type_String:
puts(" tagSturct1 식별 ");
puts(((struct tagStruct1*)pData)->szBuffer);
puts("");
break;
case type_Integer:
puts(" tagSturct2 식별 ");
printf("정수 출력 : %d \n\n", ((struct tagStruct2*)pData)->nNumber);
break;
default:
break;
}
}
결과 :
#c언어, #c언어입문, #프로그램입문, #함수포인터
'Programing - C > C Basic grammar ' 카테고리의 다른 글
106 파일에 한문자씩 쓰고 읽기(fputc, fgetc) (0) | 2017.08.10 |
---|---|
105 fopen(파일생성) (0) | 2017.08.10 |
103 void Pointer (0) | 2017.08.07 |
102 구조체를동적할당해서포인터로사용해보기 (0) | 2017.08.07 |
101 구조체(struct) (0) | 2017.08.07 |