Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme mit Pointerbeispiel

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.12.2017, 21:50 Uhr
ume



Hi , hätte eine frage bezüglich eines problems das ich habe.

Das Beispiel lautet:

Bsp 1:
int *pt;
*pt= 42;


Bsp 2:
int* pt1 = nullptr;
*pt1 = 42;


So.. wo ist hier der Unterschied?
Und ein offensichtlicher Fehler ist anscheinend auch vorhanden.

Ich kann mir keinen reim daraus machen.
Hoffe es versteht jemand.

Danke

PS: Fals das die falsche Rubrik ist für so ein Thema, dann bitte mich aufklären
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.12.2017, 10:25 Uhr
ao

(Operator)


Verschoben nach C/C++ (ANSI-Standard), weil es keine Unix-spezifische Frage ist.

Das erste Beispiel deklariert eine Pointervariable pt, initialisiert sie aber nicht. D.h. der Zeiger zeigt auf eine zufällige Speicheradresse. Der Schreibzugriff (*pt=42;) schreibt dann den Wert 42 auf diese zufällige Adresse, was zufällig funktionieren kann oder auch nicht (Programmabsturz).

Das zweite Beispiel macht das gleiche, initialisiert den Zeiger aber auf den Null-Pointer. D.h. der Zeiger zeigt auf die Adresse 0, was in C/C++ reserviert ist für "ungültiger Zeiger". Der Schreibzugriff wird mit Sicherheit abstürzen, wenn das Betriebssystem Memory-Protection hat (was für alle moderenen BS gilt). Insofern ist das 2. Programm nicht ganz so schlimm falsch wie das erste.

Ein richtiges Beispiel geht so:

C++:
int t;
int * pt = &t;
*pt = 42;


Es gibt eine definierte Variable (t), auf die man pt zeigen lässt, bevor man Daten schreibt.

Jetzt fragst du dich vielleicht, warum man sich die Mühe mit dem pt macht und nicht direkt int t = 42; sagt. Das liegt daran, dass das Beispiel zu trivial ist, um die praktische Verwendung von Pointern zu zeigen.

Dieser Post wurde am 21.12.2017 um 10:26 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.12.2017, 19:26 Uhr
ume



Ok, vielen vielen dank für die schnelle Antwort
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: