【问题标题】:C - returning 2 values on stack [duplicate]C-在堆栈上返回2个值[重复]
【发布时间】:2013-01-03 18:17:32
【问题描述】:

可能重复:
returning multiple values from a function

我一直坚持将 2 个值返回到堆栈。我的任务是编写一个计算复数的程序。一切都很好,但只有一件事。 在除数的函数中,我想做两种情况:

  1. 如果我除的数字不等于0,则只除并返回结果为一个值。
  2. 如果数字除以等于 0,我想返回 2 个值。

对于复数,我使用结构(双实数和双虚数)。我使用的函数是复数结构类型。通过函数返回我只能返回 1 个值。 如何返回第二个以使堆栈上的数字与除法前相同? 我知道我应该使用指针,但我仍然不知道如何在这里使用它们。

【问题讨论】:

  • 通过引用发送值?
  • 顺便说一句,因为 C99 具有复杂的数据类型。

标签: c stack


【解决方案1】:

由于您已经有一个复数结构(我称之为complex),您可以只返回一个实例:

struct one_or_two_complexes { 
     int howmany; 
     struct complex first; 
     struct complex second; 
};

这是否是一个好主意可能取决于调用者如何使用它

如果调用者确定除数为零,他们可以写complex result = your_function(a,b).first;,这很好。

如果调用者不确定,并且想要根据它是否为零来做一些不同的事情,那么他们可以将函数调用的结果存储在他们自己的 one_or_two_complexes 实例中,然后检查howmany,或者他们可以自己检查他们传入的除数是否为零,并在不同的情况下以不同的方式调用你的函数。

【讨论】:

  • +1 我不知道result = your_function(a,b).first; 是 C 语言中的有效语法。我以前从未见过它。我想到了 .运算符仅适用于变量。
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 2012-05-01
  • 2014-09-06
  • 2021-01-13
  • 1970-01-01
  • 2019-07-05
  • 2011-04-13
  • 2011-09-25
相关资源
最近更新 更多