Void类型的指针-C语言

时间:2022-06-01 22:00:23
关键字 Void 表示函数不接受任何参数或不返回任何值,同时还可以用在创建通用指针:一个可指向任何类型的数据对象的指针。如:

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