Void *ptr; // 将 ptr 声明为一个通用指针,但没有指定它指向的东西。
Void 指针最常见的用途是用于声明函数的参数。你可能会希望你的一个函数能够处理不同的类型的参数,可以将 int 变量传递给它,也可以将 float 变量传给它,等等。这样的情况下,你可以将函数声明为接受 void 指针作为参数,则它可以接受任何类型的数据,可以将指向任何东西的指针传递给该函数。如:
Void half(void *val);
下面是一个例子程序:
#include < stdio.h >
void half( void * pval, char type);
int main( void )
{
int i = 20 ;
long l = 100000 ;
float f = 12.456 ;
double d = 123.044444 ;
printf( " /n%d " ,i);
printf( " /n%ld " ,l);
printf( " /n%f " ,f);
printf( " /n%lf/n/n " ,d);
half( & i, ' i ' );
half( & l, ' l ' );
half( & d, ' d ' );
half( & f, ' f ' );
printf( " /n%d " ,i);
printf( " /n%ld " ,l);
printf( " /n%f " ,f);
printf( " /n%lf/n/n " ,d);
return 0 ;
}
void half( void * pval, char type)
{
switch (type)
{
case ' i ' :
{
* (( int * )pval) /= 2 ; // 强制转换类型,存取指针pval指向的int变量
break ;
}
case ' l ' :
{
* (( long * )pval) /= 2 ; // 强制转换类型,存取指针pval指向的long变量
break ;
}
case ' f ' :
{
* (( float * )pval) /= 2 ; // 强制转换类型,存取指针pval指向的float变量
break ;
}
case ' d ' :
{
* (( double * )pval) /= 2 ; // 强制转换类型,存取指针pval指向的double变量
break ;
}
}
}
程序输出结果:
20
100000
12.456000
123.044444
10
50000
6.228000
61.522222