Forum: Mikrocontroller und Digitale Elektronik Pointer auf Array?


von Robert (Gast)


Lesenswert?

Hallo,
kann mir jemand sagen was hier passiert?
1
//Prototyp von v_EEPROMwrite:
2
void v_EEPROMwrite (unsigned char adr, unsigned char dat)
3
4
//Aufruf
5
v_EEPROMwrite (EEPROM_T_ZONE_1a, (((unsigned char *)(&gui_temp_soll[ZONE_1]))[0]));
6
v_EEPROMwrite (EEPROM_T_ZONE_1b, (((unsigned char *)(&gui_temp_soll[ZONE_1]))[1]));

von THOR (Gast)


Lesenswert?

Die Adresse von gui_temp_soll[ZONE_1] wird in ein unsigned char pointer 
gecastet. Der hat mehrere Byte (der Pointer, nicht der char selbst!) und 
davon nimmt man dann einmal das untere und einmal das obere Byte.

von Jim M. (turboj)


Lesenswert?

Der Author mochte keine temporären Variablen.

Die verständlichere Version:
1
// Pointer fuer byteweisen Zugriff auf 16 Bit Daten
2
unsigned char * tempPtr = (unsigned char *)(&gui_temp_soll[ZONE_1]);
3
4
v_EEPROMwrite (EEPROM_T_ZONE_1a, tempPtr[0]);
5
v_EEPROMwrite (EEPROM_T_ZONE_1b, tempPtr[1]);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.