为什么我的函数返回像 (-33686016) 这样的数字,但没有返回所需的值?

Why is my function returning number like (-33686016), but doesn't return needed value?

本文关键字:返回 数字 函数 我的 -33686016 为什么      更新时间:2023-10-16

我需要为类进行动态数组赋值,在那里我展示了它们是如何工作的以及如何将它们传递给函数。似乎代码正在运行没有错误,但它返回的值为 -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 .

没有数组它可以工作,但我需要包含动态数组

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

因此,在您的sask函数中,当您for-loop条件允许的i=size时,您无法访问num[i] - 如果您确实访问它,它可以以意想不到的方式更改sum var(如将其更改为"-33686016")。

这样做

的方法是:

for (int i = 0; i < size; i++) // without the "=" sign