gpt4 book ai didi

c - 如何将 void 指针转换为 float 以在 C 函数中使用?

转载 作者:行者123 更新时间:2023-11-30 19:00:52 27 4
gpt4 key购买 nike

我更改了代码,以便它可以接受 void 指针转换中的 float 并在函数中使用它,但是当它在调整之前使用 int 时,它会导致“从类型分配给类型‘float’时出现不兼容的类型” 'void *'"在我将其更改为 float 之后,有人可以帮助我在哪里犯了错误吗?

#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 也返回 void*

您需要通过返回指向结果的指针来处理 square 的返回,例如

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);

但请记住在退出之前释放分配。

关于c - 如何将 void 指针转换为 float 以在 C 函数中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58904609/

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