职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 845|回复: 2

关于typedef

[复制链接]
诗诺 发表于 2009-8-28 10:48 | 显示全部楼层 |阅读模式
高手指教一下
对typedef有点了解
但是这样的c语句“typedef void *DISK_HANDLE”真是不明白
烦高手指点一下
车迷 发表于 2009-8-28 10:48 | 显示全部楼层

关于typedef

那typedef void* DISK_HANDLE明白么
sxp 发表于 2009-8-28 10:48 | 显示全部楼层

关于typedef

typedef的解释先去掉typedef看语句意思
假设意思是声明了一个变量(或指针)A,其类型为B
那么在后面的程序中可以用A来声明B形变量
例如typedef void *DISK_HANDLE;去掉typedef是void *DISK_HANDLE;
该句声明了一个指针变量DISK_HANDLE,其类型为void*,所以以后可以用DISK_HANDLE来声明一个void*指针变量

再来个复杂的:typedef int (* mypfn)(int,float);
先去掉typedef是int (* mypfn)(int,float);
所以* mypfn可以看成一个接收两个参数(1个int1个float)的返回int的函数
所以mypfn是一个函数指针
所以以后可以用mypfn来声明此类函数指针
可以这样用:
int myfun(int a, float b){...}
mypfn mypfnexample = myfun;
(或mypfn mypfnexample = &myfun;也可以)
以后调用myfun可以用myfun(3, 2.0)或mypfnexample(3, 2.0)

再来个最难的: typedef char *(*(*a[N])(int))(char *);
答案是a是包含N个指向返回指向返回指向字符的指针的函数的指针的函数的指针的数组类型
其中第一个函数接受一个char*参数
第二个函数接受一个int参数
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-1 17:19 , Processed in 0.127182 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表