Puntatori ... deep inside

Non sono del tutto convinto di quanto hai detto sopra.
Due sono le principali cause che mi hanno portato a smentirti:

  1. i valori della struttura sono copie dei valori del buffer, in quanto se li modifico, poi cambiano nella struttura, ma non nel buffer!
  2. ha anche senso quanto detto sopra visto che nella struttura i 3 byte sono definiti come tali e non come puntatori.

Strano quello in comportamento, se cambi il valore salvato nell'elemento 6 dell'array da 0xff a 0xfe, ptrTo_a.a1 dovrebbe contenere 0xfe.

L'ultimo esempio non mmi pare per niente strano.

&buffer[3]; estrae l'indirizzo di memoria della cella in cui si trova memorizzato il 4 elemento dell'array, dato che è grande 16 bit.

(byte *) cast esplicito di un dato grande 16 bit ad uno di 8 bit, risultato gli 8 bit più significativi vengono persi e rimango i meno significativi.

Poi ciò che rimane lo memorizzi in un array di byte.

nota che buffer contiene elementi da 16 bit, sottraendo 0xff - 0xee = 17, 0xee - 0xdd = 17. Prova invece a stampare &buffer[3], deve essere un intero senza segno, dove gli 8 bit meno significativi valgono 0xff.

PS: continua che mi piace. :stuck_out_tongue:

ciao.