void与指针
void的含义
void指针使用规范
void的作用
函数和void

void与指针

void的含义

void 即“无类型”, void * 则为“无类型指针”,可以指向任何数据类型。

void指针使用规范

①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对 void指针赋值。例如:

    int *pint;
    void *pvoid;
    pvoid = pint;   /* 不过不能 pint = pvoid; */
    如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint = (int *)pvoid;

②在ANSI C标准中,不允许对void指针进行算术运算如pvoid++或 pvoid+=1等,而在GNU中则允许,因为在缺省情况下,GNU认为 void *char * 一样。sizeof( pvoid )== sizeof( char ) .

void的作用

  1. 当函数不需要返回值时,必须使用void限定。例如: void func(int, int);
  2. 当函数不允许接受参数时,必须使用void限定。例如: int func(void)。

    由于void指针可以指向任意类型的数据,亦即可用任意数据类型的指 针对void指针赋值,因此还可以用void指针来作为函数形参,这样函 数就可以接受任意数据类型的指针作为参数。例如:

    void * memcpy( void *dest, const void *src, size_t len );
    void * memset( void * buffer, int c, size_t num );

函数和void

void   (*fp)(void);
定义   fp   函数指针,
该指针指向函数类型为     参数void(无参),返回类型为   void,即无返回值;

void   *fp(void);
定义   一个函数   fp,
该函数参数void   (无参),返回类型为   void   *
#include <stdio.h>
void   print(void)
{
printf( "Hello,   this   is   a   test!\n ");
}

int   main()
{
void   (*fp)(void);
fp=print;       //给函数指针赋值
fp();                 //调用   指针指向的函数~
getchar();
return   0;
}