muh*_*hzi -2 c++ pointers type-conversion void-pointers
我有一个库的返回值,它是一个void指针.我知道它指的是一个简短的int; 我尝试以下列方式获取int值(用简单的赋值替换函数调用a void *):
short n = 1;
void* s = &n;
int k = *(int*)s;
Run Code Online (Sandbox Code Playgroud)
我尝试转换一个指向一个地址的空指针,其中有一个短的,我试图将指针转换为指向一个int,当我这样做时,输出变成一个垃圾值.虽然我理解为什么它表现得像我不知道是否有解决方案.
如果您正在处理的问题真的处理short和int,您可以简单地避免指针并使用:
short n = 1;
int k = n;
Run Code Online (Sandbox Code Playgroud)
如果您正在处理的对象类型不同,那么解决方案将取决于这些类型是什么.
更新,以回应OP的评论
在评论中,你说,
我有一个返回void指针的函数,我需要相应地转换值.
如果你知道函数返回一个void*真正指向一个short对象的函数,那么,你最好的选择是:
void* ptr = function_returning_ptr();
short* sptr = reinterpret_cast<short*>(ptr);
int k = *sptr;
Run Code Online (Sandbox Code Playgroud)
因为最后一行的工作*sptr评估为short和的转换short到一个int是一个有效的操作.另一方面,
int k = *(int*)sptr;
Run Code Online (Sandbox Code Playgroud)
因为转换为a不是有效操作short*,int*所以不起作用.