Forum: Mikrocontroller und Digitale Elektronik Zeiger Problem


von Owen S. (senmeis)


Lesenswert?

Servus,

ein Zeiger wird wie folgt definert und verwendet:
1
static char __flash *statetext;
2
3
if (statetext)
4
{
5
   LCD_puts_f(statetext, 1);
6
   LCD_Colon(0);
7
   statetext = NULL;
8
}
Die Frage ist, statetext ist doch eine Adresse. Wie kann eine Adresse 
ausgewertet werden?

Ciao
Owen
von Karl H. (kbuchegg)


Lesenswert?

Owen Senmeis schrieb:

> Die Frage ist, statetext ist doch eine Adresse. Wie kann eine Adresse
> ausgewertet werden?

Auch eine Adresse ist letzten Endes auch nur ein Zahlenwert.
Die Adresse "Herberstrasse 25" liegt nun mal zb 'hinter' "Herberstrasse 
12"

Zum anderen. Wo wird denn da etwas ausgewertet? Die Adresse wird an die 
Funktion übergeben und die Funktion macht etwas damit (zb sich von 
dieser Adresse Zeichen holen und ausgeben)
von André A. (nummer5) Benutzerseite


Lesenswert?

Wenn du das if meinst, bedeutet es einfach, dass geschaut wird ob dir 
Adresse von statetext ungleich NULL ist. Für if ist jede Zahl ungleich 0 
wahr.
von Dosmo (Gast)


Lesenswert?

Nach der Definition
1
static char __flash *statetext;
enthält "statetext" erstmal den Wert 0 (weil "static"-Variablen i.d.R. 
alle mit 0 initialisiert werden).
Solange Du diesem Zeiger nun keinen Wert (z.B. die Adresse eines Textes) 
zuweist, macht es also auch keinen Sinn bzw. ist sogar gefährlich, dem 
Inhalt des Zeigers zu vertrauen.
Aus diesem Grund ist es sinnvoll, vor der Benutzung des Zeigers erstmal 
zu prüfen, ob jemand schon mal einen Wert hingeschrieben hat, d.h. ob 
der Zeiger nicht mehr den Wert 0 enthält.

Wichtig:
Falls Du der Funktion "LCD_puts_f" einen Zeiger mit Inhalt 0 übergibt, 
ist es gut möglich, daß Dein Programm abstürzt.
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.