Почему моя функция возвращает число типа (-33686016), но не возвращает нужное значение? - PullRequest
0 голосов
/ 13 января 2019

Мне нужно сделать динамическое присвоение массива для класса, где я покажу, как они работают и как передать их в функцию. Кажется, что код выполняется без ошибок, но он возвращает значение -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 голосов
/ 13 января 2019

Как сказано в комментарии - длина массива позволяет вам получить доступ к последнему элементу как arr[length-1].

Таким образом, в вашей функции sask вы не можете получить доступ к num[i], когда i=size, что разрешено вашим for-loop условием - если вы все же получите к нему доступ, это может неожиданно изменить sum переменную (как изменение это к "-33686016").

Способ сделать это:

for (int i = 0; i < size; i++) // without the "=" sign
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...