gpt4 book ai didi

c - 错误 : pointer value used where a floating point value was expected

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:07 29 4
gpt4 key购买 nike

这不是家庭作业,但我上次的作业清楚地表明我在编写 C 语言时没有清楚地理解指针。

因此,我尝试使用指针编写一个简单的程序来反转函数中的整数,这样我就可以找出我的理解差距在哪里。

显然,我已经做到了,但我仍然无法弄清楚我做错了什么。

我的源代码如下。

#include <stdio.h>

float invert(int *num);

void main (void)
{
int num;
float a;

printf("enter an integer \n");

scanf("%i", &num);

printf("Number entered %i \n", num);

a=invert(&num);

printf("This is the invse from main %f \n", a);

}


float invert(int *num) /* function inverts integer */

{
float invse;

printf("num is %i \n\n", *num);

invse = 1/(float)num;

printf("invse is %f \n\n", invse);

return(invse);

}

我的想法是,我使用指针指示计算机使用存储在函数 invert() 中的 num 地址处的值。指针出现在变量声明中。我将存储在该指针处的值转换为 float ,这样我就可以将其取反,并将其存储在局部变量中。

问题似乎出在局部变量赋值中。我的编译器返回“invert.c:29:2: error: pointer value used where a floating point value was expected invse = 1/(float)num; ^

显然我的代码指示了一个用于反转的指针值,但我将其声明为 float ,这让我感到困惑。

感谢任何帮助。这将使我不必为我的任务完成我没有发布的更大的代码集。

谢谢。

最佳答案

根据 invert 中的 printf 调用判断

printf("num is %i \n\n", *num);

您已经知道,为了访问传递给 invert 的值以进行反转,您必须取消引用 num 指针:*num

如果是这样,那么为什么在执行反转本身时不取消引用 num

invse = 1/(float)num;

我的意思是,如果您是编写 printf 的人,您还应该意识到实际的反转应该按照以下方式完成

invse = 1 / (float) *num;

或者,或者,作为

invse = 1.f / *num;

除了不正确之外,您的原始变体是非法的:不允许在 C 中将指针转换为浮点类型,这就是错误消息的原因。

附言从更大的角度来看,没有真正的理由通过指针将数字传递给 invert。传递立即值会更有意义

float invert(int num)
{
...

在那种情况下,您当然不必在 invert 中取消引用任何内容。

关于c - 错误 : pointer value used where a floating point value was expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268324/

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