Pointer auf Array?

Gast #4891839
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]));
Gast #4891854
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.
#4891855
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]);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren