Nic*_*ung 5 c pointers pthreads type-conversion
我试图使用该pthread库来计算n斐波纳契数,其中n可以从范围0-1000.当我试图将我的类型转换void*为a 时,我遇到了一个奇怪的错误double.
在我的主要部分是我对计算斐波那契函数的调用:
pthread_create(&tid, &attr, calc_fib, (void *)n);
Run Code Online (Sandbox Code Playgroud)
在我的calc_fib函数中,我试图用以下方法进行类型转换:
void *calc_fib( void *num)
{
double n;
n = (double)num;
...
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时,我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
难道我无法从类型转换void*到doubleC或我做错了我?
Dru*_*erB 12
void *num是一个指针.double n是一个变量.
你可以投射void*到double*:
double *p = (double *)num;
Run Code Online (Sandbox Code Playgroud)
然后你取消引用它:
double n = *p;
Run Code Online (Sandbox Code Playgroud)
或者在一行中:
double n = *(double *)num;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12157 次 |
| 最近记录: |