Согласно документации, struct tm *gmtime(const time_t *timer); должен преобразовать time_t, на который указывает timer, на время разбивки.
Теперь есть причина, по которой они решили сделать функцию вместо указателя time_t указателем на time_t?
Насколько я понимаю, time_t имеет арифметический тип и поэтому должен быть доступен для передачи напрямую (также я считаю разумным, что он поместился бы в long). Также существует какая-либо конкретная обработка указателя NULL (который мог мотивировать передачу указателя).
Есть ли что-то, что мне не хватает? Что-то еще актуальное сегодня?