zeiger/adressen
-
hallo, kann mir jemand erklären, warum man bei der lösung der aufgabe vor die ausgabe von zgstr (void*) schreiben soll, anstatt &zgstr? greife ich über void* auf die objektadresse zu, auf welches zgstr verweist? &zgstr liefert mir doch den adressenwert der zeigervariablen zgstr, oder? danke im voraus..
gruß sigintwarum führt das programm zu einer falschen ausgabe?
char str[] = "vermeer"; char* zgstr = str; cout << "Die Adresse von zgstr ist: " << zgstr << endl;
-
Anfängerantwort (also warte lieber auf Bestätigung)
Das Programm gibt nicht die Adresse von zgstr aus, sondern die von str (genauergesagt vom 1. element des arrays str) Ein Zeiger zeigt ja eben auf eine bestimmte Stelle im Speicher. Wenn du den zeiegr jetzt nicht per * dereferenzierst wird dir eben der Inhalt der Zeigervariable ausgegeben: Die Adresse, auf die er zeigt.
EDIT: Na klasse, natürlich ist gerade hier das nicht der Fall (siehe Post von CStoll) Und ich dachte schon ich hätte Zeiger verstanden.
-
Gehen wir mal vom Kern aus -
char* zgstr = str;- zgstr ist ein Zeiger, der auf den Anfang des Arrays str zeigt. Mitzgstrwürdest du theoretisch damit die Adresse erhalten, die dort drin steht (praktisch ist der Ausgabe-Operator für char* überladen, deshalb mußt du diesen Wert nach void* casten), mit&zgstrerhältst du die Adresse der Variable zgstr.
-
super danke, zeiger sind immer noch ein wenig undurchsichtig, aber des wird schon.
gruß sigint