Синтаксис функции времени - PullRequest
4 голосов
/ 14 января 2011

Почему функция time обычно используется следующим образом:

time_t currentTime;
currentTime = time( NULL );

вместо этого:

time_t currentTime;
time( &currentTime );

Первый метод используется более просто потому, что он, возможно, более читабелен?Или есть другая причина?

Спасибо.

Редактировать: Кроме того, почему функция time была даже разработана таким образом?Почему есть два способа установить переменную?

Ответы [ 4 ]

6 голосов
/ 14 января 2011

Всегда кажется, что имеет смысл возвращать значение из функции, а не передавать измененный параметр.

Это может быть потому, что мы учились на языках, где функции и подпрограммы были разными, не знаюоб этих молодых людях сегодня.

1 голос
/ 14 января 2011

Наиболее распространенный формат на самом деле time_t currentTime = time( NULL );

Это короче и не оставляет переменную currentTime неинициализированной. Параметр является историческим несчастным случаем и не имеет смысла.

1 голос
/ 14 января 2011

Конечно, только K & R, вероятно, знает истинный ответ, но я подозреваю, что это просто "инцидент" по историческим причинам реализации. Например, дизайн этой функции может быть начат как void time(time_t*), потому что в какой-то форме pre-ansi C просто не было возможности вернуть значение типа time_t, и только позднее она превратилась в функцию, возвращающую значение.

Если это объяснение, то причина сохранения параметра в любом случае, конечно, обратно совместима с существующим кодом.

0 голосов
/ 14 января 2011

Параметр таймера является указателем на объект типа time_t, в котором хранится значение времени.В качестве альтернативы, этот параметр может быть нулевым указателем, в этом случае параметр не используется, но объект time_t по-прежнему возвращается функцией.

Так что вам не нужно создавать объект time_t.

...