개념 :
1. 무엇이든 가르킬수 있는 포인터
2. void 형으로는 사용할수 없으므로 항상 형변환을 화여 사용하여 줍니다.
목표 :
매개 변수로 void 형과 타입을 받아 앞에 1바이트를 읽어 들이고 식별하여 상황에 맞게 움직이는 포인터를 만들어 보자
소스코드 :
#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)
{
//< 데이터를 선언
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;
Process(pInput);
pInput = (void*)&Data2;
Process(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언어입문, #프로그램입문, #void포인터
'Programing - C > C Basic grammar ' 카테고리의 다른 글
105 fopen(파일생성) (0) | 2017.08.10 |
---|---|
104 함수 포인터 (0) | 2017.08.07 |
102 구조체를동적할당해서포인터로사용해보기 (0) | 2017.08.07 |
101 구조체(struct) (0) | 2017.08.07 |
100 다차원 배열 (0) | 2017.08.04 |