Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309366
  • 博文数量: 20
  • 博客积分: 3011
  • 博客等级: 中校
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-12 10:01
文章分类

全部博文(20)

文章存档

2008年(20)

我的朋友

分类: LINUX

2008-03-06 18:09:37

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的作用
    ①对函数返回的限定。
    ②对函数参数的限定。
    当函数不需要返回值时,必须使用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 );
 
 
阅读(950) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~