Pensando un po alla portabilità del codice, e considerando il fatto che la libreria che sto facendo, potrei non usarla solo io, sia la soluzione della struct che ingloba l'array, che l'array globale potrebbe essere macchinosa sotto certi punti di vista (ditemi se dico na ca...ta).
A questo punto la soluzione poco elegante del'array static, creato in questo caso solo se si usa la funzione, direi che è decisamente invitante. La mia paura più grande era che se ogni volta che uso la funzione, tipo 10 volte, mi allocava 10 array in memoria... e ovviamente se si facesse uso continuo della funzione, la possibilità di un overflow mi spaventava.
Senza contare che con questo metodo posso creare l'array delle dimensioni esatte che mi occorrono. Cioè se il numero è < 100 ma > 10, allora crea un array di 3 elementi, la decina, l'unità e il \0.
Così facendo, penso, come sottolineava TardoFreak, l'accesso alla risorsa è immediato, però non so se è possibile senza problemi passare come argomento un array. leggevo che anche se ci sono array dello stesso tipo fare Array1 = Array2 non è possibile. Aimè, mia ignoranza, non so se quando si passa un argomento esegue le stesse associazioni di "=". Posso però, essendo static passare ugualmente l'indirizzo della variabile e accedervi? quindi passare come argomento l'inidirizzo e recuperarlo?
Sto scrivendo come se ragionassi ad alta voce.
Altra domanda, se per esempio avessi un array di 4 dimensioni, ma scrivo solo in 3 elementi, quando vado a stampare i caratteri, l'elemento vuoto viene ugualmente stampato, magari come 0x00 ? perché se così fosse allora è ancora più importante avere un array di esatte dimensioni.
questa è la funzione che mi stampa i caratteri su LCD.
- Codice: Seleziona tutto
void CaricaStringa(char Str[],char modalita)
{
int i;
for(i = 0; i < strlen(Str); i++)
{
Caricamento(modalita,Dato,Str[i]);
ClrWdt();
}
}
Ovviamente se passo un puntatore dovrò modificarla.