The benefit would be that you do not have to copy the data into another structure after calling 'time'.
If you are e.g. preparing a buffer of data to send to another application/server you would have to copy the data, which is additional overhead. By passing a pointer into your data structure you could put it right in the correct place in one shot.
Of course if your only use for the data is to convert it to another format such as a text printf, then it is more efficient to call it with NULL and save the additional storage required by your first example.
Lastly since the time function uses a single location for storage of it's internal time structure the first method would be more thread-safe, although I cannot remember of the top of my head if 'time' is in fact thread safe.