C - 在堆栈上返回 2 个值

标签 c stack

<分区>

Possible Duplicate:
returning multiple values from a function

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

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

对于复数,我使用结构(双实数和双虚数)。我使用的函数是复数结构类型。通过函数返回我只能返回 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 ,或者他们可以自己检查传入的除数是否为零,并在不同情况下以不同方式调用您的函数。

关于C - 在堆栈上返回 2 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14144773/

相关文章:

c++ - 重命名(别名)数组元素 C

java - 如何将两个数组之间的交集作为新数组?

java - dup 和 dup_x2 之间的区别

c++ - 为什么 gprof 告诉我从 main() 只调用一次的函数被调用了 102 次?

C++ 函数的错误信息重定义

c++ - 我正在返回一个值,但编译器告诉我 "function must return a value"

c - 比较素检查?

c - 如何从 PHP 扩展克隆对象

C:将DNA序列压缩成二进制

java 说 'cannot find symbol' 尽管方法是在类中声明的