Bom,
Em C, as strings são passadas como ponteiros, quando se chama uma função com ela de argumento.
Por exemplo, se eu tenho declarado:
const char myStr[] = "Minha frase de teste";
E em alguma parte do código eu tenho uma chamada para uma função que imprime esta string no display,
glcd_text(myStr);
A função glcd_text() recebe um ponteiro para a string e não a dita cuja propriamente dita.
Em geral, em um uC decente com compilador decente não tem nenhum problema em usar ponteiros para a flash, como disse o André.
Se declarar dentro do main() (seria armazenada na RAM) ela fica escondida do resto do código, embora tu possa passar ela como argumento em uma função que tu chame dentro do main().
Se tu queres usar uma constante, que penso ser o jeito mais usual, tem de declarar antes do local que tu usa a variável como argumento. Melhor explicando, a declaração tem de estar antes de tu usar ela, certo? Senão teu programa ainda não sabe que ela existe. Mas claro, tu pode usar a declaração de protótipo, mas acho melhor ver isso depois, por enquanto declara antes de usar.
Se tu declarar dentro de uma função ela fica "visível" só ali dentro.
Ufa, deu o apagão do dia bem quando eu estava no final da linha acima, mas não perdeu o meu texto!
