可能重复:
从函数返回多个值
我一直坚持将 2 个值返回到堆栈。我的任务是编写一个计算复数的程序。一切都很好,但只有一件事。在除数的函数中,我想做两种情况:
- 如果我除以的数字不等于 0,则只需除以并将结果作为一个值返回。
- 如果数字除以等于 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
,或者他们可以检查无论他们传入的除数是否为零,并且在不同情况下以不同方式调用您的函数。