I have some extensive examples of accessing PROGMEM here.
I've adapted one of the examples to show how you might do something similar to what you want:
const int NUMBER_OF_ELEMENTS = 10;
const char Message0000 [] PROGMEM = "Twas bryllyg, and ye slythy toves";
const char Message0001 [] PROGMEM = "Did gyre and gymble";
const char Message0002 [] PROGMEM = "in ye wabe:";
const char Message0003 [] PROGMEM = "All mimsy were ye borogoves; And ye mome raths outgrabe.";
const char Message0004 [] PROGMEM = "\"Beware the Jabberwock, my son! \n The jaws that bite, the claws that catch!";
const char Message0005 [] PROGMEM = "Beware the Jubjub bird, and shun\n The frumious Bandersnatch!\"";
const char Message0006 [] PROGMEM = "He took his ";
const char Message0007 [] PROGMEM = "vorpal sword in hand:";
const char Message0008 [] PROGMEM = "Long time the manxome foe he sought - ";
const char Message0009 [] PROGMEM = "So rested he by the Tumtum tree, \n And stood awhile in thought.";
const char * const messages[NUMBER_OF_ELEMENTS] PROGMEM =
{
Message0000,
Message0001,
Message0002,
Message0003,
Message0004,
Message0005,
Message0006,
Message0007,
Message0008,
Message0009,
};
void sayPhrase (const char * const * message)
{
const char * ptr = reinterpret_cast<const char *>(pgm_read_ptr (message)); // pointer to message
Serial.println(reinterpret_cast<const __FlashStringHelper *>(ptr)); // and print it
} // end of sayPhrase
void setup ()
{
Serial.begin (115200);
Serial.println ();
for (int i = 0; i < NUMBER_OF_ELEMENTS; i++)
sayPhrase (&messages [i]);
} // end of setup
void loop () { }