void * 详解

void * 相当于通用的指针类型,可以存放指向任何类型的指针,当你的函数参数类型不确定时,可以使用 void *。

但使用 void 定义一个变量,如:void a; // 编译会报错

【例1】

void *p1;  
int *p2;  
p1 = p2;              // 正确,因为 void * 可以指向任何类型的指针,无需进行强制类型转换

【例2】

void *p1;  
int  *p2;  
p2 = p1;            // 错误,“无类型” 可包容 “有类型”,但 “有类型” 不能包容 “无类型”

注意:按照 ANSI (American National Standards Institute) 标准,不能对 void * 进行算法操作,如:

void * pvoid; 
pvoid++; // ANSI:错误  
pvoid += 1; // ANSI:错误,ANSI 坚持进行算法操作的指针必须是确定知道其指向数据类型大小

实际的程序设计中,为迎合 ANSI 标准,并提高程序的可移植性,我们可以这样处理:

void* pvoid;  
(char *) pvoid++;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值