Abfragen, ob Pointer initialisiert ist.
-
Hallo Forum,
ich habe heir mal eine Anfängerfrage: Wie kann man erkennen, dass ein Pointer noch nicht initialisiert ist? Ich suche also in etwa nach dem Folgenden:
int *a; if ( a == NULL ) { // Zeiger ist noch nicht initialisiert } a = new int(123); if ( a != NULL ) { // Zeiger ist initialisiert }Vielen Dank für die Hilfe!!
Gruß,
ManphRED
-
Hallo
So wie du das willst, geht es in C++ nicht. Eine Variable/Zeiger bekommt beim Deklarieren automatisch einen Speicherbereich zugewiesen. Um im nachhinein festzustellen, ob dieser überhaupt initialisiert wurde, must du beim Deklarieren schon einen Wert initialiseren, auf den du diese Überprüfung machen kannst. Bei Zeigern nimmt mn dafür im allgemeinen NULL bzw. 0 :
int *a = NULL; // NULL heißt also, kein Speicher reserviert if ( a == NULL ) { // Zeiger ist noch nicht initialisiert } a = new int(123); if ( a != NULL ) { // Zeiger ist initialisiert }bis bald
akari
-
Du kannst dir angewöhnen, jeden Pointer mit NULL zu belegen, solange er nicht auf einen "echten" Wert zeigt - dann kannst du auch mit "if(p!=NULL)..." überprüfen, ob er initialisiert ist.
(bei deinem "int* a;" geht das leider nicht - der wird mit einem willkürlichen Wert belegt)
-
Ok, hab's kapiert. Danke ihr beiden für die schnelle Hilfe.
-
ManphRED schrieb:
a = new int(123); if ( a != NULL ) { // Zeiger ist initialisiert }Die Abfrage auf einen Nullzeiger kannst du hier weglassen. Wenn du nicht gerade einen uralt Compiler verwendest, der noch nie was vom aktuellen Standard gehört hat, dann ist hier a nie ein Nullzeiger.