
c++无类型指针(void pointers)
发布日期:2021-05-08 04:51:54
浏览次数:20
分类:精选文章
本文共 1259 字,大约阅读时间需要 4 分钟。
void 指针,就是所谓的通用指针。它是一种特殊的指针,可以指向任意类型的对象。void指针的声明就像普通的指针一样:
void *pVoid; // pVoid is a void pointervoid指针可以指向任意类型的对象:
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也就是说,当我们引用void指针时候,必须给出特定的引用类型。具体引用什么类型呢?这就要靠我们写程序的时候自己跟踪定义了。(pVoid); // cast from void* to int* cout << *pInt << endl; // can dereference pInt
#includeenum Type{ INT, FLOAT, STRING,}; void Print(void *pValue, Type eType){ using namespace std; switch (eType) { case INT: cout << *static_cast (pValue) << endl; break; case FLOAT: cout << *static_cast (pValue) << endl; break; case STRING: cout << static_cast (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;}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月15日 07时43分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
dojo/aspect源码解析
2021-05-09
Web性能优化:What? Why? How?
2021-05-09
Javascript定时器学习笔记
2021-05-09
dojo的发展历史
2021-05-09
Python存储系统(Redis)
2021-05-09
C语言指针收藏
2021-05-09
C#搞个跨平台的桌面NES游戏模拟器
2021-05-09
手把手教你安装Eclipse最新版本的详细教程 (非常详细,非常实用)
2021-05-09
《带你装B,带你飞》pytest成魔之路4 - fixture 之大解剖
2021-05-09
互联网App应用程序测试流程及测试总结
2021-05-09
根据轨迹分析出用户家在哪
2021-05-09
PostgreSQL查询表名称及表结构
2021-05-09
linux中使用awk命令
2021-05-09
如何使用google搜索?
2021-05-09
Redis分布式锁的正确实现方式
2021-05-09
设计模式-抽象工厂模式
2021-05-09
IntelliJ IDEA 中,项目文件右键菜单没有svn选项解决办法
2021-05-09
IDEA 调试Java代码的两个技巧
2021-05-09
Vue 数组和对象更新,但视图未更新,背后的故事
2021-05-09