Ciao alfa75,
Ho letto il tuo link, e la cosa è fattibile.
In pratica un puntatore non è altro che un indirizzo di memoria.
La definizione di un tipo influenza solo la sua aritmetica.
pointer++;
incrementa di una posizione se pointer è definito come char* ( dimensione 1 byte)
oppure incrementa di due posizioni se pointer è definito come int* (dimensione 2 bytes)
Detto questo ho scritto questo codice:
Code:
unsigned char Indirizzi[4];
unsigned int* Indirizzi_int = Indirizzi;
Indirizzi[0] = 0x01;
Indirizzi[1] = 0xF0;
Indirizzi[2] = 0x02;
Indirizzi[3] = 0x0A;
Print_Byte(Indirizzi[0]);
Print_Byte(Indirizzi[1]);
Print_Byte(Indirizzi[2]);
Print_Byte(Indirizzi[3]);
Print_Int(Indirizzi_Int[0]);
Print_Int(Indirizzi_Int[1]);
LA risposta al terminale è:
il byte è 01
il byte è F0
il byte è 02
il byte è 0A
l'int è F001
l'int è 0A02
Quindi l'idea di base funziona. Il problema è l'interpretazione dei due byte letti in memoria: a quanto pare il compilatore legge prima il byte meno significativo ( il primo byte letto è 0x01) e poi il più significatico (secondo byte letto è 0xF0). Ecco perchè la ricostruzione risulta invertita.
Sapete dermi se è una cosa propria del mio compilatore o se è una cosa comune?
Esiste un modo per modificare questo tipo di interpretazione dei dati?
Grazie per il vostro tempo.