Zeiger Problem

OP #2465972
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
#2465990
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)
Gast #2466482
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.

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