Kurze Frage zu C

OP #737657
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)
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.