自定义功能的新功能,指针有问题

时间:2016-10-27 17:27:31

标签: c function pointers

所以我有一个非常简单的代码来计算用户输入的声音速度,当我运行程序时,我得到一个答案,但它不正确,我得到错误

  

'第14行:赋值在没有强制转换的情况下从指针生成整数。

我不知道这意味着什么,并尝试调整我的指针和功能来尝试解决这个问题。任何帮助,将不胜感激。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int SpeedofSound(int t,int Answer);
int t,Answer;
int *pAnswer;

int main(void)
{
    printf("Please enter a Temp (Fahrenheit) to calculate the speed of sound.\n");
    scanf(" %d", &t);

    Answer = SpeedofSound;
    printf("At Temp %d, the Speed of sound is %d feet/second.", t, Answer);
    return 0;
}

int SpeedofSound(int t,int Answer)
{
    *pAnswer = 1086 * sqrt(((5 * t) + 297)/247);
    Answer = *pAnswer;
    return (Answer);
}

2 个答案:

答案 0 :(得分:0)

这是你的问题:

Answer = SpeedofSound;

这不是函数调用,而是赋值。您将函数的地址分配给名为Answer的整数变量。这样做:

Answer = SpeedofSound(t);

并重写函数以获取一个参数。丢掉pAnswer的东西。祝你好运

答案 1 :(得分:0)

以下是编译器抱怨的内容:

Answer = SpeedofSound;

你实际上并没有调用 SpeedofSound函数 - 因为你离开了()函数调用运算符,编译器会将SpeedofSound作为指针指向功能。因此,在上面的行中,您尝试将指针值分配给int,如果没有强制转换,则不允许这样做。

您的代码中有很多内容完全没有必要:您可以将其重写为

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int SpeedofSound(int t);

int main(void)
{
    int t;
    int Answer;

    printf("Please enter a Temp (Fahrenheit) to calculate the speed of sound.\n");
    scanf(" %d", &t);

    Answer = SpeedofSound( t ); 
    printf("At Temp %d, the Speed of sound is %d feet/second.", t, Answer);
    return 0;
}

int SpeedofSound(int t)
{
    return 1086 * sqrt(((5 * t) + 297)/247);
}

您不需要任何指针或全局变量。您所需要的只是tAnswer

注意整数运算给出整数结果;即1/2 == 0。您可能希望使用doubles进行输入和计算:

double SpeedofSound( double t )
{
  return 1086.0 * sqrt(((5.0 * t) + 297.0)/247.0);
}

int main( void )
{
  double t;
  double Answer;
  ...
}

您还需要在%d%f来电中将printf替换为scanf