Spiegazione istruzione

di Anonimizzato18856 il
6 risposte
Salve, premesso che sono un "neofita", mi spiegate questa istruzione:

I2CFreedom_TDeviceData *DeviceDataPrv = (I2CFreedom_TDeviceData *)DeviceDataPtr;
La prima struttura è un puntatore e mi restituisce il valore di DeviceDataPrv.
Quindi avrei I2CFreedom_TDeviceData (valore DeviceDataPrv)...
Ma l'altra quando * è tra parentesi cosa si verifica??

Grazie per ogni tipo di aiuto

6 Risposte

  • Vediamola in questi termini:
    Tipo_dato *Var1 = (Tipo_dato *)Var2;

    Quindi hai una variabile Var1 di Tipo: puntatore a Tipo_dato; la variabile Var2 è una variabile (magari di tipo void) a cui vuoi con un cast esplicito renderla di Tipo: puntatore a Tipo_dato.

    Spero aver chiarito la questione.
  • Presumo parli di I2C bus quindi un canale di comunicazione.
    Immagino che in DeviceDataPtr hai il puntatore ad un buffer di dati, probabilmente un array di byte.
    Immagino poi che I2CFreedom_TDeviceData sia una struttura.
    Con il cast che hai scritto in pratica assegni ad un puntatore alla struttura l'indirizzo dei dati grezzi: in questo modo puoi leggere i bytes che ti sono stati ricevuti, in maniera più semplice come ad es. DeviceDataPrv->campo1, DeviceDataPrv->campo2...
  • Ovviamente le spiegazioni sono corrette ma, per evitare incomprensioni (e dover sempre usare l'immaginazione), sarebbe meglio dare maggiori dettagli sul codice.

    Anche per essere più precisi, potresti dire di che tipo è la variabile

    DeviceDataPtr

    e farci vedere la struttura

    I2CFreedom_TDeviceData
  • Ci devo un attimo pensare....per il momento grazie dell'aiuto
  • Devi pensare a dare maggiori informazioni??
  • Ciao oregon, il buon rob* ha premesso di essere un neofita quindi probabilmente non sa dove andare a reperire queste informazioni .
Devi accedere o registrarti per scrivere nel forum
6 risposte