Ciau,
ieri mi sono trovato davanti ad un'istruzione C che non avevo mai visto prima, qualcuno potrebbe spiegarmi cosa fa?
Thxcodice:*(long *)&Array[0]=0x61;
Gnix
Ciau,
ieri mi sono trovato davanti ad un'istruzione C che non avevo mai visto prima, qualcuno potrebbe spiegarmi cosa fa?
Thxcodice:*(long *)&Array[0]=0x61;
Gnix
http://www.ptrace.net
Allora vediamo...
Quindi, concentrandoci sulla parte a sinistra dell'uguale:codice:*(long *)&Array[0]=0x61;
Ora, se Array[0] e' gia' un long non succede niente di strano. Viceversa, siccome l'espressione a destra dell'uguale NON e' un long, e siccome mi sembra l'ANSI C non preveda specificamente cosa debba accadere in casi del genere, il comportamento non puo' essere previsto a priori.codice:Array[0] // E' il primo valore di un array &Array[0] // E' l'indirizzo del primo valore dell'array (long *)&Array[0] // E' lo stesso indirizzo castato in modo da puntare alla rappresentazione di un long *(long *)&Array[0] // Il valore della locazione in cui si trova Array[0] interpretato come un long
Se ad esempio si adottasse la convenzione big endian, e se Array fosse di tipo int, probabilmente il valore 0x61 verrebbe memorizzato in Array[1] mentre Array[0] verrebbe azzerato.
Spero di non aver detto troppe cazzate...
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.