Почему эта функция не добавляет единицу к номеру с именем int? - PullRequest
1 голос
/ 02 августа 2020

Почему этот код не добавляет единицу к числам int?

Простите, что отправил очень простой вопрос, я новичок в c ++.

Значение чисел, похоже, не изменилось при появлении в консоли. Я неправильно передаю аргумент функции?

#include <iostream>
    
    int number = 0;
    int addOne(int a);
    
    int main()
    {
    
        std::cout << "Please type a number to add to one: ";
        std::cin >> number;
        std::cout << number << " plus one equals: ";
        int addOne(number);
        std::cout << number;
       
    }
    
    
    int addOne(int a) {
        
        return a++;
    
    }

Ответы [ 3 ]

2 голосов
/ 02 августа 2020

Аргументы функции: скопированы по умолчанию, поэтому изменение копии (в данном случае a) не повлияет на оригинал (в данном случае number).

В Если функции изменяют переменные вызывающего абонента, вы должны использовать ссылку.

Также обратите внимание, что int addOne(number); в вашей функции main не является вызовом функции, а является объявлением переменной addOne с инициализацией number .

#include <iostream>

int number = 0;
int addOne(int& a); // add "&"

int main()
{

    std::cout << "Please type a number to add to one: ";
    std::cin >> number;
    std::cout << number << " plus one equals: ";
    addOne(number); // remove "int"
    std::cout << number;
   
}


int addOne(int& a) { // add "&"
    
    return a++;

}
1 голос
/ 02 августа 2020

Еще одна возможность, ваша функция уже возвращает значение. Почему бы не использовать?

int addOne(int a) { // no &, still passed as copy
    a++;    // increase the copy
    return a;   // return value AFTER increase has been done on 'a'
}

number = 2;
number = addOne(number); // copy in (2), copy out (3)
std::cout << number; // now it's 3 
1 голос
/ 02 августа 2020

Вы передаете переменную по значению, что означает, что значение внутри функции будет копией, а исходное значение не будет изменено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...