Using PROGMEM to save RAM I am successful putting and retrieving char array into Arduino flash memory using PROGMEM char arrays. 

I am building my app using header files with class definition / implementation and would like to keep the strings  in same header file.

If I define another PROGMEM char array neither one can be executed. In other words - these PROGMEM are global arrays as far as Arduino compiler is concerned, they compile but won't show up. 

Here is my test code 

  lcd.clear();
  lcd.print(*strFlashDebug[0]);  // in CDebug 
  lcd.setCursor(0,1);
  lcd.print(*strFlashTrack[0]);  // in CTrack


If I put both definitions in same header file it only works with only one lcd.print enabled, not commented out.

It appears that multiple PROGMEM arrays can be defined and compiled but only one is actually usable. 
Any comments are appreciated.
Cheers Vaclav
The important thing to know for PROGMEM is that the AVR chip you’re using does not have a single flat address space. I.e., it does not use a von Neumann architecture; instead, it uses a specific version of what is known as a Harvard architecture: it has separate address spaces for RAM, program memory, and EEPROM. All of them start at 0. Which means that while dereferencing a nullptr is technically still undefined behavior in C++, it can be (and often is) perfectly valid in Arduino code.

The short version is: If you have a PROGMEM pointer, whatever function you pass it to must work on PROGMEM pointers. lcd.print does not, and afaict there is no way the function could possibly detect this is not a RAM pointer. You have to call a different function, assuming there is one in the first place.

See http://arduino.cc/en/Reference/PROGMEM for examples on how to use PROGMEM data.