如何将 void 指针转换为 float 以在 C 函数中使用?
How to cast a void pointers to float to be used in a function in C?
我更改了一个代码,以便它可以接受空指针转换中的浮点数并在函数中使用它,但是当它在调整它之前使用整数时,在我将它更改为 "incompatible types when assigning to type 'float' from type 'void *'" 之后漂浮,有人可以帮助我在哪里犯错吗?
#include <stdio.h>
void * square (const void *num);
int main() {
float x, sq_int;
x = 6.543;
sq_int = square(&x);
printf("%f squared is %f\n", x, sq_int);
return 0;
}
void* square (const void *num) {
static float result;
result = (*(float *)num) * (*(float *)num);
return(result);
}
问题行是
sq_int = square(&x);
因为 square
returns void*
也是。
您需要通过 return 指向结果的指针来处理 square
的 return,例如
return &result;
并主要将其提取为:
sq_int = *(float *)square(&x);
这是个坏主意,因为您正在访问一个不再位于堆栈中的变量。
或者更好,先将其存储在堆中,例如
void* square (const void *num) {
float *result = malloc(sizeof(float));
*result = (*(float *)num) * (*(float *)num);
return result;
}
并主要将其提取为:
sq_int = *(float *)square(&x);
但是记得在退出之前释放分配。
你需要做两件事。
转换 return 类型:
sq_int = *(float*) square(&x);
Returnresult
.
的地址
return &result;
我更改了一个代码,以便它可以接受空指针转换中的浮点数并在函数中使用它,但是当它在调整它之前使用整数时,在我将它更改为 "incompatible types when assigning to type 'float' from type 'void *'" 之后漂浮,有人可以帮助我在哪里犯错吗?
#include <stdio.h>
void * square (const void *num);
int main() {
float x, sq_int;
x = 6.543;
sq_int = square(&x);
printf("%f squared is %f\n", x, sq_int);
return 0;
}
void* square (const void *num) {
static float result;
result = (*(float *)num) * (*(float *)num);
return(result);
}
问题行是
sq_int = square(&x);
因为 square
returns void*
也是。
您需要通过 return 指向结果的指针来处理 square
的 return,例如
return &result;
并主要将其提取为:
sq_int = *(float *)square(&x);
这是个坏主意,因为您正在访问一个不再位于堆栈中的变量。
或者更好,先将其存储在堆中,例如
void* square (const void *num) {
float *result = malloc(sizeof(float));
*result = (*(float *)num) * (*(float *)num);
return result;
}
并主要将其提取为:
sq_int = *(float *)square(&x);
但是记得在退出之前释放分配。
你需要做两件事。
转换 return 类型:
sq_int = *(float*) square(&x);
Returnresult
.
return &result;