Read text from structure data stored in PROGMEM

While the structure array StarsList[] is in PROGMEM, it has a member, StarName, that will be pointing to a non-progmem string.

See: avr-libc: Data in Program Space

I know one way to make the string actually go into PROGMEM, but it's likely a space-waster:

struct Star// this structure is defined before  the array named StarsList
{
  char StarName[32];   // room for the longest star name
  int32_t RA;              // Right ascension 513397 
  int32_t DECL;           // Declination 690570
};

This way the string is right there in the struct and is in progmem.

The pgmspace manual gives a clearer picture what's going on than the Arduino docs.

As for accessing the struct, you kinda have two choices, copy the whole array element to a conventional RAM struct, and access it normally:

struct Star CrtStar;
memcpy_P(&CrtStar, &StarsList[3], sizeof(struct Star));

Or access each of the members via pgm_read_dword() and strcpy_P() and such.