Я пишу программу, которая позволяет пользователю вводить целое число в переменную 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
не утроить значение, просто напечатать его как есть.
Любая помощь приветствуется.
Как следует из названия, передача переменной по значению означает, что функция получает только значение переменной, а не доступ к самой переменной.
В вашем примере 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
,