从void指针中获取一个指向short的int

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,当我这样做时,输出变成一个垃圾值.虽然我理解为什么它表现得像我不知道是否有解决方案.

R S*_*ahu 6

如果您正在处理的问题真的处理shortint,您可以简单地避免指针并使用:

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*所以不起作用.