c++无类型指针(void pointers)
来源:互联网 发布:java培训值不值 编辑:程序博客网 时间:2024/04/30 07:48
void 指针,就是所谓的通用指针。它是一种特殊的指针,可以指向任意类型的对象。void指针的声明就像普通的指针一样:
void *pVoid; // pVoid is a void pointer
void指针可以指向任意类型的对象:
int nValue;float fValue; struct Something{ int nValue; float fValue;}; Something sValue; void *pVoid;pVoid = &nValue; // validpVoid = &fValue; // validpVoid = &sValue; // valid
但是,void指针并不知道它所指向的具体类型,所以它不能直接拿来引用。如果要引用它,就必须明确把void指针转换成特定类型的指针。
int nValue = 5;void *pVoid = &nValue; // can not dereference pVoid because it is a void pointer int *pInt = static_cast<int*>(pVoid); // cast from void* to int* cout << *pInt << endl; // can dereference pInt
也就是说,当我们引用void指针时候,必须给出特定的引用类型。具体引用什么类型呢?这就要靠我们写程序的时候自己跟踪定义了。
#include <iostream> enum Type{ INT, FLOAT, STRING,}; void Print(void *pValue, Type eType){ using namespace std; switch (eType) { case INT: cout << *static_cast<int*>(pValue) << endl; break; case FLOAT: cout << *static_cast<float*>(pValue) << endl; break; case STRING: cout << static_cast<char*>(pValue) << endl; break; }} int main(){ int nValue = 5; float fValue = 7.5; char *szValue = "Mollie"; Print(&nValue, INT); Print(&fValue, FLOAT); Print(szValue, STRING); return 0;}
0 0
- c++无类型指针(void pointers)
- c++ void*无类型指针
- C语言--无类型指针void*的学习与使用
- c/c++void及void指针类型
- void *空(无)类型指针
- 无类型指针void *的学习
- Void类型的指针-C语言
- C/C++下void*类型指针介绍
- C语言中的void * 指针类型
- C/C++语言中的void及void指针类型
- C/C++语言中的void及void指针类型
- C/C++语言中的void及void指针类型
- C/C++语言中void类型及void*指针
- C语言中的void 和void 指针类型
- C语言中的void 和void 指针类型
- C语言之void类型及void指针
- C语言中的void 和void 指针类型
- C语言--无类型指针
- 栈上的内存对齐
- android获取mac地址
- Android官网无法下载eclipse-adt-bundle
- iOS中使用blend改变图片颜色
- 中看不中用的室内设计有哪些
- c++无类型指针(void pointers)
- Leetcode: Rotate Image
- android SQLite 优化(四)数据查询 (待续...)
- Eclipse SVN插件检出Src下面的包变成了文件夹解决
- spring中配置proxool数据源
- android获取SD卡的状态
- repo upload上传提交时发生remote rejected异常
- xml 和 Java bean 互转实现类
- Android 深入研究adb