如果可能,那么如何返回多个值。 它不能是因为返回是通过控制器或CPU中的累加器完成的。
这是正确的理由吗?
答案 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期望堆栈上只有一个“返回”参数。确实,结构会让你“返回”多个值,所以将指向结构的指针也作为普通参数传递。