Использование различных переменных в функции
У меня есть функция SetTFgr(float T, int FGr)
для установки времени и степени фильтрации моего светодиодного увеличителя.
Он работает без проблем и изменяет значения T
или Fgr
в соответствии с кнопками, которые я нажимаю. И T
, и FGr
являются глобальными переменными.
Теперь я хочу использовать одну и ту же функцию с разными переменными.
Когда я вызываю функцию с SetTFgr(TExp[i], FGrExp[i])
, я ожидаю, что функция будет работать со значениями TExp[i]
или FGrExp[i]
и увеличивать/уменьшать эти значения. Это не так, вместо этого он использует значение T
или Fgr
.
Как я могу получить то, что мне нужно?
@Dick van Nierop, 👍0
Обсуждение2 ответа
Параметры функций в C++ задаются по значению. Таким образом, T
в вашей функции-это не та переменная, которую вы используете для вызова функции. Он имеет только одно и то же значение. Используйте float& T
для передачи ссылки на переменную.
Чтобы было ясно, вы хотите прочитать значения кнопок (значение не указано) и использовать эти значения для установки переменной 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.
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- Что лучше использовать: #define или const int для констант?
- Функции со строковыми параметрами
- Как работать с аналоговыми контактами в цикле?
- Какие есть другие IDE для Arduino?
- Как использовать переменные и функции в нескольких файлах .ino
- Разница между void setup() и void setup(void)
- Будет ли .ino-скетч ардуино компилироваться непосредственно на GCC-AVR?
Пожалуйста, покажите полный пример кода с вашей проблемой, @chrisl
Итак, чтобы было ясно, вы хотите прочитать значения кнопок (значение не указано) и использовать эти значения для установки переменной float и int . Кроме того, вы хотите написать функцию, которая принимает несколько параметров, указывающих, где вы хотите хранить эти значения кнопок?, @Duncan C