C函数原型

时间:2012-05-08 21:36:12

标签: c

在这里学习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;
}

2 个答案:

答案 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中声明一个局部变量并返回它以获得相同的结果。