PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Nullpointer: Initialisieren nötig?



peschmae
27-07-2004, 20:28
Moin, wenn ich einen Pointer habe mit dem noch nix gemacht wurde - sollte der dann == 0 sein oder muss ich die alle zuerst von Hand auf 0 initialisieren?

http://www.rtr.tu-darmstadt.de/cppkurs/15_3NULL_Pointer.html ist diesbezüglich nicht so klar. Im Stroustroup hab ich auch nix wirkliches gefunden. Allerdings:


#include <iostream>

int main(int argc, char *argv[]) {
int* i = 0;
std::cout << "Das i: " << i << std::endl;
int* j;
std::cout << "Das j: " << j << std::endl;
}

und der Output dazu:


Das i: 0
Das j: 0x400164a0


Oder mach/denke ich da was falsch?

MfG Peschmä

wraith
27-07-2004, 20:36
Der Zeiger wird nicht automatisch mit 0 initalisiert (Ausnahmen wie sonst auch static und globale Zeiger), er zeigt also erstmal auf einen beliebigen Speicherbereich.

Es stimmt, die von dir verlinkte Seite ist sehr unklar (schlecht, falsch) formuliert.

peschmae
27-07-2004, 20:42
Das geht heute aber ganz schnell. :)

Danke!

MfG Peschmä

pik7
27-07-2004, 20:43
hallo,

gibt noch ne Variante:



#include <iostream>

int * k;

int main(int argc, char *argv[]) {

int* i = 0;
std::cout << "Das i: " << i << std::endl;
int* j;
std::cout << "Das j: " << j << std::endl;
std::cout << "Das k: " << k << std::endl;
}




gruß

SeeksTheMoon
27-07-2004, 23:06
hmm, dass Zeiger Zufallswerte besitzen weiß ich auch noch, mich hat dann aber spontan geschockt, dass der Output bei mir zufällig folgender war:
Das i: 0
Das j: 0
Das k: 0

aber auf einem anderen Rechner kam
Das i: 0
Das j: 0xbffff518
Das k: 0

alles ist wieder gut :D