gpt4 book ai didi

C 中一个函数可以返回多个值吗?

转载 作者:行者123 更新时间:2023-11-30 21:41:38 24 4
gpt4 key购买 nike

我是 C 语言的初学者。我听说 C 语言中的函数不能返回多个值,但我的程序中并非如此;它返回多个值并且代码运行良好。请解释一下。

#include<stdio.h>
int main () {
int a=10,b=9;
return a,b;
}

最佳答案

回答这个问题:不是那样的,不。

  • 您可以返回一个指向包含多个值的 malloc 数组的指针。

  • 或者返回一个指向包含多个值的 malloc 结构的指针

  • 或者您可以将指向存储位置的指针作为该函数参数的一部分传递,并在那里设置值。

  • 或者您可以将一些值放入该函数已经可以访问的现有数据结构(动态或静态)中。

  • 或者您可以将 int 或 long 划分为带有多个值的位域。

  • ...可能还有其他解决方案。

当然,要使这些方法中的任何一个起作用,调用者必须知道您正在使用什么方法并正确调用该函数。

但在 C 中,逗号不是返回多个值的解决方案。逗号运算符计算其两个操作数,丢弃第一个操作数的结果,并返回第二个操作数。因此,您的示例只是查看 a,将其丢弃,然后返回 b。绝对不是您认为自己在做的事情。

(我应该指出,C 将逗号用于多种不同的目的;例如,这里的逗号与数组初始值设定项中的逗号不同。)

无论如何,我使用了一种允许用逗号分隔多值表达式的语言:CLU,它是许多面向对象语言的祖先。在CLU中,您可以编写诸如a,b=b,a之类的语句来交换两个值,或者编写“r,theta=cartesianToPolar(x,y)”来进行坐标转换.这是一个很好的功能,并且很容易在现代堆栈计算机上实现。

(CLU 还有许多其他不错的功能,但后来的语言没有采用这些功能;我一直想回去尝试找出原因。)

关于C 中一个函数可以返回多个值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com