Использование различных переменных в функции

У меня есть функция SetTFgr(float T, int FGr) для установки времени и степени фильтрации моего светодиодного увеличителя.

Он работает без проблем и изменяет значения T или Fgr в соответствии с кнопками, которые я нажимаю. И T, и FGr являются глобальными переменными.

Теперь я хочу использовать одну и ту же функцию с разными переменными. Когда я вызываю функцию с SetTFgr(TExp[i], FGrExp[i]), я ожидаю, что функция будет работать со значениями TExp[i] или FGrExp[i] и увеличивать/уменьшать эти значения. Это не так, вместо этого он использует значение T или Fgr.

Как я могу получить то, что мне нужно?

, 👍0

Обсуждение

Пожалуйста, покажите полный пример кода с вашей проблемой, @chrisl

Итак, чтобы было ясно, вы хотите прочитать значения кнопок (значение не указано) и использовать эти значения для установки переменной float и int . Кроме того, вы хотите написать функцию, которая принимает несколько параметров, указывающих, где вы хотите хранить эти значения кнопок?, @Duncan C


2 ответа


0

Параметры функций в C++ задаются по значению. Таким образом, T в вашей функции-это не та переменная, которую вы используете для вызова функции. Он имеет только одно и то же значение. Используйте float& T для передачи ссылки на переменную.

,

1

Чтобы было ясно, вы хотите прочитать значения кнопок (значение не указано) и использовать эти значения для установки переменной float и int. Кроме того, вы хотите написать функцию, которая принимает несколько параметров, указывающих, где вы хотите хранить эти значения кнопок?

Это необычный способ использования параметров функции. Обычно параметры функции задают входное значение, а затем вы используете это значение, чтобы что-то сделать. Вместо этого вы хотите, чтобы входные данные были глобально доступными показаниями (значениями кнопок), а параметры функции указывали, где хранить эти значения.

Параметры функций C и C++ обычно передаются "по значению". Это означает, что функция отправляет значение, а не указатель на переменную, содержащую эту переменную. Таким образом, вызываемая функция не может изменить исходную переменную.

Если вы хотите передать указатель на переменную, вы должны использовать оператор & "address of" для передачи переменной "по ссылке".

Ваша функция может выглядеть следующим образом, используя синтаксис C++ pass by reference:

void SetTFgr(float &T, int &FGr) {
    float input_T = //вычислить значение кнопки для T
    T = input_T;
    int input_FGr = //вычислить значение кнопки для Far
    FGr = input_FGr;
}

Тогда вы вызовете его следующим образом:

SeTFgr(T, FGr);

Вы также можете сделать то же самое, используя синтаксис указателя C.

,