gpt4 book ai didi

c - 将 double as (void *) 传递给函数

转载 作者:行者123 更新时间:2023-12-05 08:49:02 24 4
gpt4 key购买 nike

我写了一个接收void *类型参数的函数和我可以传递char*int的计划,并在接收函数我读任何我期望的。

看起来像:

void __declspec(dllexport) void* func(void *);

接下来我尝试在这里传递一个double:

double d = 3.14;
(*funcPtr)( (void *)d );

但出现错误:

error: invalid cast from type 'double' to type 'void*'

然后我经历了method to pass double to void argument线程并尝试这种方式:

double d = 3.14;
double *p_d = (double *)d;
(*funcPtr)( (void *)p_d );

但还是一样的运气:

error: invalid cast from type 'double' to type 'double*'

我缺少什么以及如何解决我的问题?我认为一个解决方案是定义几个 typedef 函数指针。

最佳答案

double d = 3.14;
double *p_d = &d;

您不需要将类型转换为需要引用 的指针。当您需要使用指针中的值时,您可以像这样取消引用它。

double new_d = *p_d;

并且在将 p_d 作为空指针接收的函数中,您必须在使用前将指针转换回双指针。

喜欢

void func(void *p_d)
{
double new_d = *(double*)p_d;
...
}

关于c - 将 double as (void *) 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65205467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com