如何在C ++中添加50位数字?

时间:2009-07-21 09:26:19

标签: c++

在C ++中我想添加两个50位数字。我用一个数组来保存每一个。这意味着我想添加两个数组。我的问题是我想在名为AddNum()的函数中执行此操作 并将结果传递给另一个名为WriteNum的函数进行打印,我不知道如何将一个函数返回的数组传递给另一个函数。 希望我的问题足够清楚 thanx all

5 个答案:

答案 0 :(得分:9)

不要使用数组。在教科书或帮助系统中查找C ++ std :: vector 类,然后使用它。它会让你的生活更轻松。

答案 1 :(得分:3)

不要从加法函数返回一个数组 - 而是让它返回void并传递数组以通过引用或指针存储结果。然后,您将该数组传递给函数进行打印。

答案 2 :(得分:1)

首先,如果要添加大量数字,将它们保存在数组中会很麻烦,并且需要CPU功耗和内存。如果可以,请使用GMP(优化和快速库)。

如果必须使用数组,那么使用c ++的向量而不是c的数组,这将最大限度地减少出错的可能性并使其更简单。

要向函数发送一个向量,你可以正常使用int,string等,即

vector<int> number1;
vector<int> number2;

addnum(number1, number2);

其中addnum定义为:

void addnum(vector<int> a, vector<int> b)

这会将您拥有的第一个和第二个矢量数组复制到变量ab中。建议您发送对addnum的引用,以便跳过以始终复制向量。这可以通过将addnum定义更改为:

来完成
void addnum(vector<int>& a, vector>int>& b)

然后像往常一样对a和b执行正常操作。

要让addnum返回一个向量,您需要将addnum的定义更改为

vector<int> addnum(vector<int>& a, vector>int>& b)

当然还有带有要返回的向量的return语句。

如果选择通过引用发送值,则意味着如果在addnum函数中更改它们,则在主类中声明的number1和number2向量也将更改。这基本上意味着,如果将结果保存在addnum函数中的变量a中,您将在number1向量中具有相同的值,这意味着您不需要该函数来返回新的向量但可以重用现有的。

答案 3 :(得分:0)

只是为了澄清sharptooth的答案:如果你想返回一个新数组,你必须在函数中分配它,其他人必须释放它。它可以完成,但你必须记住在调用函数后释放结果。正如Neil Butterworth所指出的那样:std :: vector可以帮助你解决这个问题。

答案 4 :(得分:0)

如果我做对了,如果你想做的话,你的功能应该有这样的签名:

int* addNumbers(int* array1, int* array2)
{
....
}

void writeNumbers(int *array3)
{
....
}

你可以这样称呼:

//declare and init array1 and array2
//...
writeNumbers(addNumbers(array1, array2));

我希望我能正确理解你的问题。