#c
Вопрос:
В принципе, я хочу взять время в секундах, которое хранится в переменной «Время истекло», и использовать его для сравнения в другой функции, чтобы моя программа могла выводить разные данные в зависимости от времени. Однако я совершенно не уверен в том, как я могу ссылаться на эту локальную переменную в другой функции, а глобальные переменные не будут работать, поскольку «Время истекло» зависит от другого кода в моей функции SetTimer ().
Пожалуйста, помогите заблудившемуся студенту!
void setTimer() {
int timeElapsed = 0;
time_t beginTimer = time(NULL);
timeElapsed = difftime(time(NULL), beginTimer);
Комментарии:
1. Знаете ли вы, как передавать аргументы функциям? Подсказка: Вы уже сделали это четыре раза в показанном коде. Не могли бы вы сделать это еще раз для
timeElapsed
?
Ответ №1:
Вам нужно предоставить еще немного контекста, чтобы быть в состоянии помочь с этой конкретной проблемой, но вы можете получить доступ к расписанию несколькими способами.
Если вы должны были передать значение в set timer, которое должно быть изменено, вы можете передать ссылку на указатель и изменить переменную вне вашей функции
void setTimer(int *input) {
int timeElapsed = 3;
time_t beginTimer = time(NULL);
timeElapsed = difftime(time(NULL), beginTimer);
*input= timeElapsed; // Changes the compare variable in main
}
int main(){
int compare = 5;
setTimer(amp;compare);
cout << compare; // This will now be the timeElapsed from setTimer
return 0;
}
Это изменит все, что вы передадите как 0, так как
time_t beginTimer = time(NULL);
timeElapsed = difftime(time(NULL), beginTimer);
это приведет к потере времени 0, но если вы пытаетесь получить доступ к переменной за пределами области действия функции, вы можете просто передать переменную, к которой хотите получить доступ, или вернуть значение, изменив void setTimer()
значение int setTimer()
и вернув timeElapsed