[X]关闭

void*无符号指针的作用?

文档创建者:uisrc
浏览次数:9846
最后更新:2016-06-12
[mw_shl_code=c,true]  /** pointer to the actual data in the buffer */
  void *payload;[/mw_shl_code]




发表评论已发布 1

宋桓公

发表于 2016-6-12 15:50:36 | 显示全部楼层




void*指针可以指向任何类型,可以称为是泛型的指针。
有时候,只能明确应该传入或返回一个指针,但不确定指针指向的类型时,就应该用void*。如果用具体的指针,虽然也是可以实现所要的功能,但会需要一次显式类型转换,这显然更麻烦,而且使程序不清晰。
举个例子:
stdlib.h中的标准库函数memcpy用来复制指定长度的一片存储器区域,它的原型为
void* memcpy(void*, const void*, size_t);
其中第一个参数表示指向目标的指针,第二个参数表示指向源的指针,最后一个参数表示要复制的字节数(size_t同int)。
假设设计时不用void*而用char*,那么当需要传入非char*的指针类型时需要在指针参数前加上(char*)转换,显然会影响编码效率和源码可读性。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则