Kurze Frage zu C

OP #737657
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe eine kurze Frage bzgl. C-Programmierung.

Folgendes Szenario:
Ich will eine doppelt verkettete Liste implementieren, deren Elemente 
mittels eines struct definiert sind. Darüber hinaus gibt es eine globale 
Variable, die immer auf das erste Element der Liste zeigt. Beim Start 
des Programms gibt es noch keine Elemente. Diese werden zur Laufzeit 
(nach ein paar Benutzereingaben) erzeugt und an die Liste gehängt.
Das Anhängen passiert in einer Funktion, die auf die oben genannte 
globale Variable zugreift. Zuerst soll geprüft werden, ob der globalen 
Variable bereits ein Element zugewiesen ist. Wenn nein, dann wird gerade 
das erste Element in die Liste eingefügt => globale Variable bekommt das 
Element zugewiesen. Wenn ja, dann existieren bereits Elemente => 
Element, auf das die globale Variable verweist und das gerade erzeugte 
Element miteinander verketten und der globalen Variable das gerade 
erzeugte Element zuweisen.

So weit so gut, aber wie prüfe ich in C ab, ob meiner globalen Variable 
bereits ein Element zugewiesen ist? In Java kann ich Attribute und 
Variablen mittels ==null bzw. !=null abfragen, ob sie ein Objekt 
referenzieren oder nicht. Wie wird sowas in C gemacht?

Für Links, kurze Denkanstöße oder Tipps wäre ich sehr dankbar...

Gruß
Christoph
(Firma: Embedded Microtec) #737661
Lesenswert?
• ▲
▼
Hi

In C wird das im Grunde genauso gemacht. Deine globale Variable sollte 
ein Pointer sein. Am Beginn deines Programms wird der Pointer auf NULL 
initialisiert. D.h. du lässt denn Pointer quasi auf die Adresse 0 
zeigen.
1
 ListItem *first_item = NULL;

Wenn du jetzt ein neues Element erzeugst (malloc), dann kannst du deine 
globale Variable auf NULL abfragen.
1
 
2
if(first_item == NULL)
3
{
4
// ...
5
}
6
else
7
{
8
// ...
9
}

Das wärs dann eigentlich schon!

mfg
Andreas

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