C++它 typedef void *HANDLE
2015-07-17 15:47
381 查看
阅读时编写代码的代码,经常看到一个代码: typedef void *HANDLE ,这是它背后的故事?怎么理解呢?
不明白的时候。这是非常美妙的感觉,后来我才知道这,这是typedef定义,就在void*键入罢了。那是,HANDLE相当于void *,们能够叫它披着句柄皮的指针(PS:指针和句柄是有差别的,在这说句废话);
对于void* 神通广大。由于它作为函数參数or函数返回值,可以接受不论什么类型的指针;也就是来者不拒,是指针就接受(so open ,Aha)。但应用的时候。应该注意,void * 必须指向详细的类型。比如:
void * HappyPt;
int* pi=static_cast<int*>HappyPt;; //注意喽,在这里详细到了int*哦!
详细使用方法例如以下所看到的:
1.还记得它吗?
void * __cdecl memset(_Out_opt_bytecapcount_(_Size) void * _Dst, _In_ int _Val, _In_ size_t _Size);
这是memset这个函数的原型,在这里你能够毫不留情的把void* 换成HANDLE,memset就是为了将传递进来的地址開始的n个字节的值所有赋值成某个特定的值,所以不是必需知道是什么类型的指针。就用void类型指针取代了。
用作參数的时候,我们一般不关心传递进来的地址类型;
用作返回值的时候。通常是返回一个地址,至于这个地址你要做什么用那是你决定的。最常见的就是malloc了,它返回void类型指针作为分配好的内存区的首地址。至于是什么类型,就须要用户自己来指定了。
演示样例
typedef void *HANDLE;
HANDLE m_exitThreadEvent;
m_exitThreadEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPTSTR lpName
);
不明白的时候。这是非常美妙的感觉,后来我才知道这,这是typedef定义,就在void*键入罢了。那是,HANDLE相当于void *,们能够叫它披着句柄皮的指针(PS:指针和句柄是有差别的,在这说句废话);
对于void* 神通广大。由于它作为函数參数or函数返回值,可以接受不论什么类型的指针;也就是来者不拒,是指针就接受(so open ,Aha)。但应用的时候。应该注意,void * 必须指向详细的类型。比如:
void * HappyPt;
int* pi=static_cast<int*>HappyPt;; //注意喽,在这里详细到了int*哦!
详细使用方法例如以下所看到的:
1.还记得它吗?
void * __cdecl memset(_Out_opt_bytecapcount_(_Size) void * _Dst, _In_ int _Val, _In_ size_t _Size);
这是memset这个函数的原型,在这里你能够毫不留情的把void* 换成HANDLE,memset就是为了将传递进来的地址開始的n个字节的值所有赋值成某个特定的值,所以不是必需知道是什么类型的指针。就用void类型指针取代了。
用作參数的时候,我们一般不关心传递进来的地址类型;
用作返回值的时候。通常是返回一个地址,至于这个地址你要做什么用那是你决定的。最常见的就是malloc了,它返回void类型指针作为分配好的内存区的首地址。至于是什么类型,就须要用户自己来指定了。
演示样例
typedef void *HANDLE;
HANDLE m_exitThreadEvent;
m_exitThreadEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPTSTR lpName
);
相关文章推荐
- C语言中的struct用法
- C++ I/O
- poj 3073 Spam(注意转义字符‘\’+dp)
- C++学习心得(5)继承与派生
- win8.1下无法运行vc++6.0的解决方法
- C++二叉树笔试题
- c++内存泄漏
- c++ 如何输出大数不用科学计数法 和如何保留几位小数输出
- C语言的枚举及指针
- MFC,C++,VC++,VS2010 之间到底是什么关系
- C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- 基于C/C++的读取文件夹下所有文件(图片、文档等)的代码
- C++ memset 浅析
- C++学习之map类型
- cfree——好用的c语言编辑器(附注册码)
- c++
- 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活
- 浅析c++中virtual关键字
- C++继承:公有,私有,保护
- 详解一道C++笔试题,考察重载、覆盖、多态