Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202719
  • 博文数量: 77
  • 博客积分: 1749
  • 博客等级: 上尉
  • 技术积分: 810
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-28 18:27
文章分类
文章存档

2012年(28)

2011年(49)

分类: C/C++

2011-11-18 21:07:20

void *可以指向任何类型的数据,提供了一种抽象的需要。
void *作用:
              --->对函数返回的限定
              --->对函数参数的限定
譬如:赋值时,若两个参数类型不同,则编译时会出错,除非进行强制类型转换;
          然而对于void *,任何类型的指针都可以直接赋值给它,无需进行强制类型转换;
          注意,空类型指针赋值给其它类型则不行,会出错。

使用void的情况:
1.地球人都知道,函数没有返回值,则声明为void类型。若不加返回值类型限定,则函数的返回值默认为int型;
2.地球人都知道,如果函数无参数,则声明其参数为void;
3.如果函数的参数类型可以为任意类型指针,则声明其为void *,如
                  void *memcpy(void *dest, const void *src, size_t len);
                  void *memset(void *buffer, int c, size_t num);
这样任何类型的指针都可以传入,体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不管其类型。
4.ANSI规定不能对空类型指针进行算数操作,但是GCC认为空类型指针的操作与char *一致。

阅读(1149) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~