Ciao,
ho un problema di C per cui avrei bisogno di una dritta.
il mio programma prevede una serie di aree dati dove memorizzare dei valori che arrivano da una serie di sensori.
Nel programma devo richiamare una routine "Ricevi" passandogli come parametro quale sia il gruppo sensori da trattare.
A sua volta la routine Ricevi chiama un'altra routine "Aggiorna", anche qui passandogli il gruppo sensori da aggiornare. E' in questa seconda routine che i dati vengono effettivamente aggiornati.
Concettualmente il tutto dovrebbe fare qualcosa che (semplificato) è questo:
byte S1[4]; // dati gruppo sensori 1
byte S2[4]; // dati gruppo sensori 2
byte S3[4]; // dati gruppo sensori 3
void Ricevi(byte* address){
// qui prepara un po di cose e poi:
Aggiorna(address);
}
void Aggiorna(byte* address){
//aggiorna i valori nella specifica area dati che gli è stata passata
address[1]=1;
address[2]=2;
address[3]=3;
}
Purtroppo non mi funziona perche nelle aree dati S1-S3 non trovo poi i valori gusti. Penso di sbagliare qualcosa nel passaggio dei puntatori.
Qualcuno più esperto di C sa darmi una dritta?
Grazie e ciao.
H
byte S1[4]; // dati gruppo sensori 1
byte S2[4]; // dati gruppo sensori 2
byte S3[4]; // dati gruppo sensori 3
void loop(){
Ricevi(&S1);
Ricevi(&S2);
Ricevi(&S3);
}
Un array è un puntatore. SEMPRE.
utilizzare le [] dopo il nome dell'array equivale a usare la * con qualche magheggio.
quindi tu con "Ricevi(&S3);" non stai passando l'indirtizzo dell'array, ma l'indirizzo dell'indirizzo dell'array.