编写高质量代码——正确区分void与void*

void:数据类型的对立面,即“无类型”,本身不是一种数据类型。

使用如下:

(1)如果函数没有返回值,那么应将其声明为 void 类型。

(2)如果函数无参数,那么声明函数参数为 void 。

=========================================================

void*:通用类型指针,可以指向任何类型的数据。

void *pVoid;

float *pFloat;

pVoid = pFloat; //正确,无需强制转型(任何类型的指针都可以直接赋值给void*[赋值给其它类型,需要强转])

pFloat=pVoid ; //错误

Note:在 C语言中,标准允许T*与void*之间的双向转换,间接导致了各种数据类型之间的隐式转换是允许的,无论是从低级到高级,还是从高级到低级,这样的转换带来了太多的不安全因素。在C++中,双向变成单向,在不使用强制类型转换的前提下,不允许将 void* 赋值给其他类型的指针


注意:GNU中,指定 void* 的算法操作与char* 一致,但ANSI标准更通用,移植性更强。


void* memcpy(void* dest, const void *src, size_t len);

void* memset(void *buffer, int c, size_t num);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值