Die Funktion SPITransfer erwartet offenbar einen unsigned char, also 8
Bit. page hat aber (hoffentlich) einen größeren Typ, vielleicht ein
uint16_t.
Von diesem uint16_t soll nun das "zweite" Byte gelesen werden. Welche
Wertigkeit das hat, ist plattformabhängig. Daher ist das schon mal eine
blöde Idee. Aber sei es drum. Der Aufruf macht jetzt folgendes:
1 | page // Der Wert von page (16 Bit)
|
2 | &page // Die Adresse von page als Zeiger auf 16 Bit
|
3 | (unsigned char*) &page // Die Adresse von page als Zeiger auf ein Byte interpretiert
|
4 | ((unsigned char*) &page) + 1 // Die Adresse des nächsten Bytes
|
5 | *(((unsigned char*) &page) + 1) // Der Wert des Bytes an dieser Adresse
|
Im zweiten Beispiel wird im ersten Teil kein Zeiger gebildet, sondern
nur der Typ von page von (vermutlich) uint16_t auf unsigned char
geändert. Also muss auch kein Zeiger mit * derefenziert werden.