C ++中的函数和数组:意外的输出

时间:2017-04-14 18:21:35

标签: c++ arrays function

我在这里需要一些帮助。

我刚开始学习C ++(来自Python背景)。

我试图熟悉数组和函数。在每个函数上面写了一堆函数来执行。

然而,无论作为输入提供的参数,应该对数组中的元素求和并返回其总和的函数似乎是在结果中添加10。请问我做错了什么,因为我似乎无法发现这一点。我的代码的总体布局的任何帮助也将不胜感激。

// WORKING WITH ARRAYS AND FUNCTIONS

#include<iostream>

using namespace std;

// FUNCTION TO INSTANTIATE ARRAY INT OF LENGTH N.
int* array_creator(int n)
{
    static int ary_of_ten[10];  //declare array
    for (int i=0; i<n; i++)   //use loop to fill it up
    {
        ary_of_ten[i] = i+1;
    }
    return ary_of_ten;
}

//FUNCTION TO PRINT ARRAY ELEMENTS
void* array_printer(int arr[], int array_lenght)
{
    for (int i=0; i<array_lenght-1; i++)
    {
        cout << arr[i] << " ";
    }
    cout << arr[array_lenght-1] << endl;
}

//FUNCTION ACCEPTS INT ARRAYS AND RETURNS ARRAY OF SQUARE OF EACH ELEMENT
int* square_array(int *p, int array_length)
{
    const int ary_sz(array_length);
    static int sqd_values[10];
    for (int i=0; i<ary_sz; i++)
    {
        *(sqd_values + i) = *(p+i) * *(p+i);
    }
    return sqd_values;
}

//FUNCTION ACCEPTS INT ARRAYS AND RETURNS SUM OF ITS ELEMENTS
int sum_array(int *arry, int array_length)
{
    int summation;
    for(int i=0; i<array_length; i++)
    {
        summation += *(arry + i);
    }
    return summation;
}

int main()
{
    cout << sum_array(array_creator(10), 3) << endl;
    array_printer(array_creator(10), 10);           //print array of 1-10 elements
    array_printer(square_array(array_creator(10), 10), 10);     //prt arry of sqrd values
    return 0;
}

1 个答案:

答案 0 :(得分:2)

summation shuld初始化为0。

int summation = 0;