Time and TimeAlarms Libraries – Ask here for help or suggestions

Look at the prototype:

 // date as ddmmyy, time as hhmmsscc, and age in milliseconds
  void get_datetime(unsigned long *date, unsigned long *time, unsigned long *age = 0);

The function get_datetime is expecting unsigned long pointers (see the asterisks).

Thus you are correct in passing &fix_age which is a pointer to the unsigned long fix_age.

But afterwards the variable is a simple variable. You don't dereference it. You dereference pointers, eg.

  unsigned long fix_age = 0 ;
  unsigned long * ptr_fix_age = &fix_age ;

  gps.get_datetime(NULL,NULL, ptr_fix_age);

In this case the variable ptr_fix_age is a pointer (see the asterisk) and its value is &fix_age because the "&" operator takes the address of the thing it is next to.

Now, you could either say:

if(fix_age < 1000)

or:

if(*ptr_fix_age < 1000)

If you use the pointer you dereference it. If not, you don't.