为什么我的函数返回数字,如(-33686016),但不返回所需的值?

时间:2019-01-13 11:12:17

标签: c++ arrays function

我需要为类进行动态数组分配,在其中说明它们如何工作以及如何将它们传递给函数。似乎代码正在运行,没有错误,但是它返回的值为-33686016,但是我需要它来返回传入的整数的总和。

所以我想做一个可以与动态数组一起使用的计算器,因此您可以输入需要在循环中求和的任意整数,还没有完成循环部分,但是没有它甚至无法工作。我试图添加指针并使其返回内存地址。但仍然无法获得价值。

源文件:

#include <iostream>
#include "saskait_funkc.h"

int main()
{

    int size;
    std::cin >> size;
    int *arr = new int[size];

    for (int i = 0; i <= (size - 1); i++) {
        std::cin >> arr[i]; }

    int kopa =  sask(arr, size);
    std::cout << kopa;

    system("pause");
    return 0;
}

功能:

int sask(int *num, int size) {
    int sum = 0;
    for (int i = 0; i <= size; i++) {
        sum = sum + num[i];}

    return sum;
}

因此,例如第一个输入(2表示您接下来要输入多少个整数),然后(1和2是要求和的整数)和输出应该是3,但它输出-33686016

没有数组就可以使用,但是我需要包含动态数组

1 个答案:

答案 0 :(得分:1)

如评论中所述-数组长度使您能够以arr[length-1]的形式访问最后一个元素。

因此,在sask条件允许的num[i]情况下,您无法在i=size函数中访问for-loop-如果您访问它,则可以更改{{ 1}} var以意外的方式(将其更改为“ -33686016”)。

方法是:

sum