malloc
-
hallo,
#include <iostream> using namespace std; void main(void) { int b=7; int* x=&b; int** ptr=&x; *ptr=(int*)malloc(8); //Warum reicht hier nicht ptr also ohne* //Schließlich entspricht *ptr folgendem: &b //b ist ja eigentlich kein Zeiger }
-
Hä? Also erstmal: Falsches Forum. Ansonsten bezieht sich der zweite Zeiger auf die Adresse von b. Nur zeigt der normale Zeiger nur noch auf nix reserviertes. Von daher muss für den Zeiger wieder neuer Speicher allokiert werden.
-
kann keiner helfen ?
-
blurry33 schrieb:
kann keiner helfen ?
Nur wenn du ne klare Frage stellst...
-
blurry33 schrieb:
...
... int** ptr...; *ptr=(int*)...; }Der Rest interessiert den Compiler (bzw. das Typsystem) nicht:
ptr zeigt auf einen int-Pointer (nicht:"ist ein int-Pointer").
Das Ergebnis von "(int*)malloc()" muss aber in einen int-Pointer abgelegt werden (bzw. "einem int-Pointer zugewiesen werden").Kleines "Real-life-Beispiel":
- Dein Haus ("int")...
- ... hat eine Adresse ("Zeiger auf int") ...,
- ... die auf einem Zettel auf meinem Schreibtisch ("Zeiger auf Zeiger auf int") liegt.Es reicht nicht, "Zettel auf Simon2s Schreibtisch" auf einen Brief zu schreiben, der zu Deinem Haus geliefert werden soll. Stattdessen muss der Zettel gelesen (= "dereferenziert"; in C++ mit '*') und das Ergebnis auf den Brief geschrieben werden.
Den Rest macht die Post.
Gruß,
Simon2.
P.S.:
blurry33 schrieb:
kann keiner helfen ?
Es motiviert niemanden, wenn Du Antworten ignorierst. Es kann sein, dass Du mit ihnen nichts anfangen kannst, aber einfach zu tun, als seien sie nicht da, schafft kein Kllima, in dem Hilfsbereitschaft gedeiht.