Функция типа bool получает параметр (ссылку) и, возможно, возвращает его в c++?

У меня есть домашнее задание в моем университете, где я должен сделать функцию типа bool(double &var), которая принимает ссылку на переменную в качестве параметра. Затем функция выполняет некоторые вычисления и должна вычислить результат в новой отдельной переменной, но в то же время вернуть его в переменной var (параметр функции). Я хотел бы спросить, как этого добиться? Ниже приведен простой пример проблемы:

#include <iostream>
using namespace std;
double rez;
bool func(double &var){
//var = 5;
if(var>3){
    rez = var;
    return var;
}
else{
    return false;
}
}
int main(){

}

Вы где-то неправильно поняли свои инструкции. Вернуть double как bool невозможно. Возможно, вы предназначались для назначать результата вычисления в var и возврата true, если ошибок нет?

alter igel 26.10.2018 07:41

Почему rez = var;? На самом деле должно быть наоборот, var = /* the complicated calculation */; return true; и else return false; без присвоения var. Я не понимаю, какую роль играет rez.

Scheff's Cat 26.10.2018 07:45
5
2
75
1

Ответы 1

Когда вы передаете по значению. Как и bool func(double var), происходит то, что вы получаете локальный var, который исчезнет, ​​если вы покинете область видимости. Представьте себе что-то вроде этого: Функция

bool func(double var) {
     double res = var * 2;
     return true;
}

называется так:

double someVar = 5;
bool success = func(someVar);

Вы можете рассчитать с var все, что хотите, при возврате с func локальная копия var исчезнет, ​​а у вас останется someVar == 5.

Теперь, когда вы передаете ссылку (например, bool func(double &var)), все, что вы делаете с переданным var, будет выполнено с исходной. Это означает, что при возвращении с func у вас останется someVar == 10. success был бы правдой в любом случае.

Надеюсь это поможет

Другие вопросы по теме