C언어 void형 포인터
void형 포인터는 함수의 매개변수를 선언하는 경우에 가장 많이 사용됩니다. 가끔 여러가지 형태의 인수를 받아들일 수 있는 함수를 만들 필요가 있을 것이고, 어떤 경우에는 함수에 int형을 전달하고 다른 어떤 경우에는 float형을 전달할 수 있습니다. 함수가 void형 포인터를 인수로 받아들이도록 선언하면 한 가지 데이터 형만을 받아들이도록 제한되지 않습니다.
void pnt(void *x);
이렇게 선언을 하면 어떤 형태의 포인터도 인수로 전달하여 함수를 호출할 수 있습니다. 하지만 어떤 형태의 데이터를 가리킬지 모르는 상태에서 void형의 포인터를 전달할 수 있지만 포인터가 가리키는 변수의 값을 사용할 수는 없습니다. 그래서 형변환이 필요합니다.
(type *)x;
여기서 type은 상황에 맞는 데이터형입니다. 만약 int형이라면
(int *)x;
x가 가리키는 int형 값을 사용하기 위해서는
*(int *)x;
이러한 문장을 작성합니다.
간단한 예제를 하나 들겠습니다.
#include <stdio.h> void pnt(void *x, char type); main(){ printf("%d\n",i); pnt(&i, 'i'); } void pnt(void *x, char type) //형변환 |