Как мне ссылаться на то, что хранится в «Истекшем времени», для сравнения в другой функции?

#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