我正在尝试使用 pthread
库来计算 n
斐波那契数,其中 n
的范围可以是 0-1000
。当我尝试将我的 void*
类型转换为 double
时,我遇到了一个奇怪的错误。
主要是调用我的计算斐波那契函数:
pthread_create(&tid, &attr, calc_fib, (void *)n);
在我的 calc_fib
函数中,我尝试使用以下方式进行类型转换:
void *calc_fib( void *num)
{
double n;
n = (double)num;
...
但是,当我尝试这样做时,出现以下错误:
In function ‘calc_fib’:
error: pointer value used where a floating point value was expected
In function ‘main’:
error: cannot convert to a pointer type
我不能在 C 中将 void*
类型转换为 double
还是我只是做错了?
最佳答案
void *num
是一个指针。 double n
是一个变量。
您可以将 void*
转换为 double*
:
double *p = (double *)num;
然后你取消引用它:
double n = *p;
或者在一行中:
double n = *(double *)num;
关于将 void* 转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700384/