void指针和typedef函数

本文详细介绍了C/C++中void指针的特性和使用限制,包括其与其他类型指针之间的转换方式,以及如何遵循ANSI标准进行编程。此外,还探讨了typedef用于函数指针别名的定义方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、void*

void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。

int *pint;
void *pvoid;
pvoid = pint; /* 
不过不能 pint = pvoid; */
如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint = (int *)pvoid;
小心使用void指针类型 

按照ANSI(AmericanNationalStandardsInstitute)标准,不能对void指针进行算法操作,即下列操作都是不合法的:

void*pvoid;
pvoid++;//ANSI
:错误
pvoid+=1;//ANSI
:错误

在实际的程序设计中,为迎合ANSI标准,并提高程序的可移植性,我们可以这样编写实现同样功能的代码:

void*pvoid;
(char*)pvoid++;//ANSI
:正确;GNU:正确
(char*)pvoid+=1;//ANSI
:错误;GNU:正确

二、typedef

typedef int (*MYFUN)(int, int)
这种用法一般用在给函数定义别名的时候
上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一个int 


参考:

http://blog.youkuaiyun.com/yming0221/article/details/6249151

http://www.cnblogs.com/shenlian/archive/2011/05/21/2053149.html

转载于:https://my.oschina.net/acemumu/blog/111873

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值