【发布时间】:2016-10-27 17:27:30
【问题描述】:
所以我有一个非常简单的代码来使用用户输入表单计算声速,当我运行程序时我得到一个答案但它不正确并且我得到错误
'第 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);
}
【问题讨论】:
-
你显然知道如何调用函数(提示:
printf和scanf都是函数),那你为什么不调用你的函数呢?但是,您确实需要了解有关指针的更多信息。这里不需要指针。我建议你find a good beginners book to read。 -
请记住,函数参数
int t与全局变量int t无关,Answer也是如此。该函数将使用范围最近的那个——函数参数。全局变量int t, Answer;实际上属于main。该函数不需要第二个参数Answer,因为计算结果作为函数值返回。 -
*pAnswer = 1086 * sqrt(((5 * t) + 297)/247);是您的下一个问题。pAnswer不指向有效内存,您需要分配它(我忽略了整体设计问题,因为这显然是一种做法,但是使用全局指针并从该函数中对其进行变异并不是完成的好方法你想要什么。)。 -
另外,您可能需要进行浮点计算而不是整数计算。
-
None 您的全局变量是必需的(尽管您可能需要在
main()中声明的int Answer)。您无需声明函数中使用的变量的全局副本。