如何使函数返回C中多个变量类型的结果?

时间:2010-10-04 00:39:30

标签: c variables function

刚开始从Cocoa开发指南学习C,我想知道如果(如果可能的话)我将返回具有多个变量类型的函数的结果。例如,我有一个简单的数学函数,我练习我正在阅读的内容,并给了它多个变量类型:

#include <stdio.h>

float doMath (int variable1, float variable2, int variable3, float variable4);

main()
{
    printf ("Math is fun!!\n");

    float theMath = doMath (2, 3.66, 9009, 7.990);
    printf ( "Result = %f\n", theMath );

}

float doMath (variable1, variable2, variable3, variable4) 
{
    return (variable1 * variable2) + (variable3 - variable4);
}

如何在单个函数/等式中正确使用多个变量类型? 另外,我不确定返回行的语法是否正确......我只是对它进行了一次尝试。

2 个答案:

答案 0 :(得分:3)

首先,不要将函数定义放在main()函数中。在外面做。 您可能希望int main()而不仅仅是{,return 0 int main()

然后只需指定一个浮点变量来保存结果并返回它。

#include <stdio.h>

float doMath (int variable1, float variable2, int variable3, float variable4);

int main()
{
    printf ("Math is fun!!\n");

    float theMath = doMath (2, 3.66, 9009, 7.990);
    printf ( "Result = %f\n", theMath );

    return 0;
}

float doMath (int variable1, float variable2, int variable3, float variable4) 
{
    float answer = (variable1 * variable2) + (variable3 - variable4);
    return answer;
}

答案 1 :(得分:0)

无法返回多种类型。但是你可以返回一个联合(或者更好的是一个包含类型指示符和联合的结构)。

typedef union {
   int i;
   float f;
} multi;
typedef struct {
   short type;
   multi m;
} multitype;

multitype f(int arg1, ...);

当然,你必须手工管理多态性。