zeiger funktionieren nicht
-
ich bin ein einsteiger in C++
ich habe Visual C++ 2005 Express Editionich hatte schon viele probleme mit diesem programm
aber bei diesem komme ich einfach nicht mehr weiter :#include<iostream> using namespace std; int main (){ int a=22; cout<<&a<<endl; int* b; int b=&a; cout<<b<<endl; }beim debuggen standen folgende fehlermeldungen:
-----------------------------------------------------------------------------
Fehler 1 error C2040: 'b': 'int' unterscheidet sich von 'int *' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
Fehler 2 error C2440: 'Initialisierung': 'int *__w64 ' kann nicht in 'int' konvertiert werden
-----------------------------------------------------------------------------
Fehler 3 error C2088: '<<': Ungültig für class
-----------------------------------------------------------------------------kann es sein dass ich vergessen habe eine header datei einzubinden?
-
int* b; int b=&a; // Hier deklarierst du b erneut, es wurde aber schon als int* deklariert.Du kannst den Zeiger entweder direkt initialisieren:
int* b = &a;oder zuerst definieren und dann zuweisen:
int* b; b = &a;
-
danke jetzt funktioniert es

-
int* b; b = &a;müsste es nicht heißen
int* b; *b = &a;oder geht beides?
lg
Walter
-
@Walter S.
int* b; *b = &a;b stellt den Typ int dar.
&a stellt den Typ int dar.
Somit funktioniert die Zuweisung nicht.Außerdem würde mit *b ein Zeiger dereferenziert, der irgendwo hinzeigt -> Undefiniertes Verhalten.
Keine Garantie auf Richtigkeit.
MfG
-
@Walter S.,
Das sind unterschiedliche Dinge. Ich empfehle nochmals die Grundlagen zu lesen
int* p; // Zeiger auf ein int, wilder Zeiger, uninitialisiert. int a = 4; // a ist ein int-Objekt. p = &a; // p hat nun die Adresse auf a gespeichert. *p = 10; // p wird dereferenziert und dadurch dem a-Objekt den Wert 10 zugewiesen. // a hat somit nun den Wert 10!Falls das nicht verständlich genug war, am besten nochmals Zeiger&Co nachschlagen

Grüssli
-
Walter S. schrieb:
int* b; b = &a;müsste es nicht heißen
int* b; *b = &a;oder geht beides?
lg
Walter
Nein, *b ist vereinfacht gesagt das, worauf b zeigt.
-
ja danke war sehr verständlich. Das kommt davon wenn zu viele dinge gleichzeitig macht und dann mal eben postet ohne nachzudenken

-
-close-