Hi,
Der Pointer my_foo.hello ist ja nicht initialisiert. Er verweist also auf eine beliebige Stelle im Speicher. Da er nicht auf NULL zeigt, ist er TRUE.
soweit richtig.
Wie überprüfe ich, a) ob ein Pointer auf eine valide (von mir zugewiesene) Adresse zeigt
Gar nicht. Du kannst bestenfalls die Speicherverwaltung des Betriebssystems fragen, ob ein Lese- oder gar Schreibzugriff über diesen Zeiger erlaubt ist (AFAIR bietet das Windows-API entsprechende Testfunktionen, ich finde aber im Augenblick nichts Passendes).
oder b) wie initialisiere ich alle Pointer default mit NULL. (Angenommen, das struct hat n Elemente, möchte ich ja nicht n Elemente auf NULL setzen)
Easy: memset(&var, 0, sizeof(var));
Alternativ bei dynamisch vom Heap angefordertem Speicher: calloc() anstatt malloc() verwenden.
So long,
Martin
Man soll den Tag nicht vor dem Abend loben.
Und den Mann nicht vor dem Morgen.
(alte Volksweisheit)