Call-по ссылке и Call-по стоимости

Я пишу программу, которая позволяет пользователю вводить целое число в переменную valueи вызывает две альтернативные функции, каждая из которых утраивает выбранное целочисленное значение.
Функция triple_by_value передает значение переменной по значению, утраивает параметр и возвращает результат.

Функция triple_by_reference передает число переменной по ссылке и утраивает исходное значение числа через параметр ссылки.

#include <iostream>
using namespace std;

int main()
{
cout << "Enter a number (-1 to end): ";
cin >> value;

if (value != -1)
{
triple_by_value(value);
cout << "Triple-By-Value: " << value << endl;
triple_by_reference(value);
cout << "Triple-By-Reference: " << value << endl;
}
return 0;
}

int triple_by_value(int value)
{
value *= 3;
return value;
}

int triple_by_reference(int &value)
{
value *= 3;
return value;
}

Кажется, у меня возникла проблема, когда функция triple_by_value не утроить значение, просто напечатать его как есть.

Любая помощь приветствуется.

0

Решение

Как следует из названия, передача переменной по значению означает, что функция получает только значение переменной, а не доступ к самой переменной.

В вашем примере int value это совершенно другая переменная из value в mainПросто он имеет то же значение. Тем не мение, int &value это ссылка на value в mainЭто означает, что можно думать об этом как о value в main сам.

Если вы печатаете value в triple_by_value после value *= 3 Вы получите значение, которое вы хотите. Если ты хочешь value в main чтобы иметь новое значение, вы можете назначить новое значение value в main при выполнении value = triple_by_value(value); в mainили просто использовать triple_by_reference,

3

Другие решения