Zeiger Verständnis die 20.
-
Hallo,
ich lerne zur Zeit den Umgang mit Zeigern.
Ich schrieb ein kleines Programm, welches mir die Adresse und den Inhalt einer
Adresse ausgeben sollte, leider bekomme ich total wirres Zeug heraus,
z.B hat plötzlich *c = "hallo" in der Ausgabe mit cout << *c; nur noch ein h, die
anderen Buchstaben fallen förmlich weg. Na jedenfalls hier ist der Quellcode, wäre nett wenn mir den jemand kommentieren könnte.#include <iostream> using namespace std; int main() { // Wieso geht: int *p = 3; nicht? aber -> int *p; *p = 3; cout << p << '\n' << *p; char *c = "hallo"; char *q; *c == *q; cout << *c << '\n' << *q; cout << c << '\n' << q; cout << *c << '\n' << q; cout << c << '\n' << *q; }
-
// Wieso geht: int *p = 3; nicht? aber -> int *p; *p = 3; // weil int *p = 3; gleichbedeutend ist mit int *p; p = 3; // btw ist dein Code inkorrekt. p ist nicht initialisiert und zeigt // "zufällig" irgendwo in die Pampa. Dann machst du einen Schreibzugriff // auf die Adresse -> Peng cout << p << '\n' << *p; char *c = "hallo"; char *q; *c == *q; // kann ebenfalls zum Absturz führen: // 1) q ist nicht initialisiert, zeigt also auf eine "zufällige" Speicherstelle // ein Lesezugriff kann einen Schutzfehler verursachen // 2) c zeigt auf eine Zeichenkettenkonstante. Ein Schreibzugriff darauf // ist nicht erlaubt und kann mit Absturz oder wenigstens // unvorhergesehenem Verhalten beantwortet werden cout << *c; // gibt das Zeichen, auf das c zeigt, aus cout << c; // gibt die nullterminierte Zeichenkette, die bei c beginnt, // aus }
-
-
Ist da ein "dev/" zuviel im URL?
-
MFK schrieb:
Ist da ein "dev/" zuviel im URL?
Ja.
-
Warum berichtigt es dann keiner?
http://www.c-plusplus.net/forum/viewtopic.php?t=39497
-
// 2) c zeigt auf eine Zeichenkettenkonstante. Ein Schreibzugriff darauf
// ist nicht erlaubt und kann mit Absturz oder wenigstens
// unvorhergesehenem Verhalten beantwortet werdenhm? C wird an der stelle doch garkeinem schreibzugriff ausgesetzt, oder?
*c == *q;
Bleibt immernoch ein vergleich, wobei das ergebnis im Datennirvana verschwindet.
@Author: sicher das das gewollt war?
-
THE_FreaK schrieb:
C wird an der stelle doch garkeinem schreibzugriff ausgesetzt, oder?
Ups, ich hab an der Stelle eine Zuweisung sehen wollen. Du hast natürlich recht.