找回密码
 注册
查看: 1753|回复: 6

void* 型指针如何使用?

[复制链接]
发表于 2005-7-8 09:17:30 | 显示全部楼层 |阅读模式
在c++中,可以将其他类型指针转换为void *,可以逆向转换吗?比如void*指向一个字符串,如何打印出来?
发表于 2005-7-8 09:41:13 | 显示全部楼层
再变回来呀 char*
回复

使用道具 举报

 楼主| 发表于 2005-7-8 09:54:53 | 显示全部楼层
害羞
强制转换写错了
回复

使用道具 举报

发表于 2005-7-9 10:29:48 | 显示全部楼层
static_cast
回复

使用道具 举报

发表于 2005-7-9 20:00:35 | 显示全部楼层
c++中使用static_cast应该是不行的,应该用reinterpret_cast强制转换.c++中static_cast功能是最弱的,一般用于兼容类型转换,如char和int之间的转换;dynamic_cast多用在父类和子类之间的转换,reinterpret_cast是最野蛮的强制类型转换,主要就是用于void*类型和其他指针类型的转换,有一点指鹿为马的意思,也就是说这个指针指向什么它就指向什么,可以看一下<<Think in C++>>,里面介绍的还是比较详细的.
回复

使用道具 举报

发表于 2005-7-9 20:10:39 | 显示全部楼层
比如说是这样的。
char* str = "This is an example";
void* ptr = str; //将字符串指针str赋值给void*类型变量ptr时,就丢失了类型信息。
所以直接使用cout << ptr << endl;这样是不行的,必须使用
cout << reinterpret_cast<char *>(ptr) << endl;首先将ptr强制转换为char*类型,然后在进行输出。
回复

使用道具 举报

 楼主| 发表于 2005-7-11 20:06:34 | 显示全部楼层
我看过<<Think in C++>>中这部分内容,以为用处不大忽略了,看来我还是太浮,向楼上各位学习!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-7-23 23:59 , Processed in 0.042716 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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