Chinaunix首页 | 论坛 | 博客
  • 博客访问: 840156
  • 博文数量: 85
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 952
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 22:52
文章分类

全部博文(85)

文章存档

2011年(1)

2008年(1)

2007年(60)

2006年(23)

我的朋友

分类: C/C++

2006-12-03 22:55:14

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的作用
   
①对函数返回的限定。
    ②对函数参数的限定。
    当函数不需要返回值时,必须使用void限定。例如: void func(int, int);
    当函数不允许接受参数时,必须使用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 );

   
参考资料:《 C/C++语言void及void指针深层探索 》,宋宝华
阅读(1789) | 评论(0) | 转发(0) |
0

上一篇:函数指针

下一篇:static关键字

给主人留下些什么吧!~~