为什么我们不能从C中的函数返回多个值?理由好吗?

时间:2012-06-08 13:39:41

标签: c

如果可能,那么如何返回多个值。 它不能是因为返回是通过控制器或CPU中的累加器完成的。

这是正确的理由吗?

4 个答案:

答案 0 :(得分:9)

因为这就是语言的定义方式。没有根本原因;其他语言可以返回多个值(例如Matlab)。

作为“变通方法”,您可以返回包含多个字段的结构。

答案 1 :(得分:3)

通过将它们放入结构中,您可以完全“返回”多个项目,或者将指针传递给函数,以便函数可以写入一些在函数返回后仍然存在的值。

答案 2 :(得分:1)

您一次不能返回多个值。因为返回函数的语法是以一种只接受一个值的方式定义的。请查看以下示例。

a=returnfunction();

在上面的情况下,如果函数returnfunction()返回多个值,则编译器会混淆初始化变量a的返回值。如果函数returnfunction()返回两个值1和2,那么编译器会对将值1或2赋值给变量a感到困惑。所以为了防止这些类型的问题,函数的定义方式是不返回多个值。

答案 3 :(得分:0)

与其表达方式相反,实际上没有任何值“返回”。 实际上,返回值/地址作为堆栈上的参数传递给函数调用。然后,return语句实际修改了该参数,从而将结果传递给调用者。

从某种意义上说,它几乎就像void func(arg1, arg2, *ret)

不同的语言处理方式不同。 C期望堆栈上只有一个“返回”参数。确实,结构会让你“返回”多个值,所以将指向结构的指针也作为普通参数传递。