kleine Pointer und Type cast Frage

Gast #3065885
Lesenswert?
• ▲
▼
Was bedeuten die zwei Zeilen genau?

Die Addresse von page wird um 1 erhöht und anschliessend ein cast auf 
unsigned char, aber warum mit *? Warum wird hier eine addresse zu einem 
pointer gemacht, und warum das zweite * ganz am Anfang?
1
SPITransfer((*((unsigned char*)&page+1)));

Warum ist hier kein weiterer * notwendig?
1
SPITransfer((((unsigned char)page&0xFE)|(*((unsigned char*)&addr+1) & 0x01)));
#3065921
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.