/* File: rec4.c Passing records by reference. */ typedef struct tag { int hour ; int minute ; } time_t ; time_t add75(time_t *p) { time_t result ; int min ; /* Correct for bogus minutes */ if ( (*p).minute > 59 ) { min = p->minute ; p->minute = min % 60 ; p->hour += min / 60 ; } min = p->minute + 15 ; result.minute = min % 60 ; result.hour = p->hour + 1 + (min/60) ; return result ; } main() { time_t start, stop ; printf("First Run ...\n") ; start.hour = 10 ; start.minute = 0 ; stop = add75(&start) ; printf ("Start at %d:%02d, stop at %d:%02d\n", start.hour, start.minute, stop.hour, stop.minute) ; printf("Second Run ...\n") ; start.hour = 2 ; start.minute = 30 ; stop = add75(&start) ; printf ("Start at %d:%02d, stop at %d:%02d\n", start.hour, start.minute, stop.hour, stop.minute) ; printf("Third Run ...\n") ; start.hour = 4 ; start.minute = 45 ; stop = add75(&start) ; printf ("Start at %d:%02d, stop at %d:%02d\n", start.hour, start.minute, stop.hour, stop.minute) ; printf("Fourth Run ...\n") ; start.hour = 4 ; start.minute = 90 ; stop = add75(&start) ; printf ("Start at %d:%02d, stop at %d:%02d\n", start.hour, start.minute, stop.hour, stop.minute) ; }