在这里学习C,我对如何使用函数原型感到很困惑。
我主要在将函数调用main时遇到问题。我确定我在这里搞砸了一些东西,因为所有这些都打印在内存中的任何东西。
感谢您的帮助。
#include <stdio.h>
double source_volt(double vs);
int main()
{
double source_volt(double vs);
double vs;
printf("%lf", vs);
return 0;
}
double source_volt(double vs)
{
int valid = 0;
do
{
printf("Enter source voltage Vs in volts: ");
scanf("%lf", &vs);
if (vs < 0 || vs > 100)
{
valid = 0;
printf("Please enter a number between 0 and 100.\n");
}
else
valid = 1;
}while(!valid);
return vs;
}
答案 0 :(得分:3)
这不适合你:
int main()
{
double source_volt(double vs); //You already declared the function,
//you dont need the doubles
double vs;
printf("%lf", vs);
return 0;
}
相反:
int main()
{
double vs;
vs = double source_volt(vs); //The double keyword is gone
printf("%lf", vs);
return 0;
}
但实际上,你在源伏特中根本不需要参数。
您可以将该功能重写为:
double source_volt(void)
{
double vs;
int valid = 0;
do
{
printf("Enter source voltage Vs in volts: ");
scanf("%lf", &vs);
if (vs < 0 || vs > 100)
{
valid = 0;
printf("Please enter a number between 0 and 100.\n");
}
else
valid = 1;
}while(!valid);
return vs;
}
答案 1 :(得分:2)
主double source_volt(double vs);
内的行实际上重新声明了该功能。然后使用main中的vs
而不初始化它。
定义的函数source_volt
将被调用如下:
double vs;
vs = source_volt( vs );
但是,我还要指出,你没有通过将双重函数传递给函数来获得任何东西。您可以在source_volt
中声明一个局部变量并返回它以获得相同的结果。