Allgemeine Frage zu Pointern
-
Hallo,
eines würde ich gerne bestätigt oder widerlegt haben: Ich nehme an, dass man eigentlich auf jeden Pointer vezichten könnte. Man könnte ÜBERALL; wo man nen Pointer übergibt einfach die ganz normale Variable mit dem Adress-Operator davor, also z.b. &a, übergeben. Ist es denn so? Kann ich also jeder Funktion, die einen Pointer verlangt, die Adresse mit '&' gefplt vom Variablen Namen über geben.??
-
Bei der Übergabe, sicher. Wenn du selber eine Funktion schreibst, die nen Pointer übernimmt, musst du ihn natürlich angeben.
-
Die Frage beruht auf einem grundlegenden Verständnisproblem: Wenn a eine Variable (oder ein anderer lvalue-Ausdruck) ist, dann ist &a ein Pointer darauf.
-
wenn foo eine Variable ist, dann ist &foo ein Zeiger auf dieselbe
wenn foo ein Zeiger auf eine Variable ist, dann ist *foo die Variable und &*foo ein Zeiger auf die Variable (foo == &*foo)
-
Einleuchtend. So weit so gut. Eine letzte Frage, zur Selbstsicherung:
Einen pointer auf nen int, zb. int* a kann man mit *a dereferenzieren, um den Inhalt des gezeigten Speicherblocks zu manipulieren. Kann man das ganauso mit folgendem machen ??:
----------------
int a;
a = 222;
cout << a;
cout << *&a;
---------------Liefern nun die beiden 'couts' dasselbe? (Ich nehme mal an, ja!)
Die eigentliche frage dieses posts könnte man eigentlich so formulieren: Können der Dereferenzierungsoperator und der Adressoperator in einem Schritt kombiniert werden?
-
NurZuBesuch schrieb:
Liefern nun die beiden 'couts' dasselbe? (Ich nehme mal an, ja!)
Die eigentliche frage dieses posts könnte man eigentlich so formulieren: Können der Dereferenzierungsoperator und der Adressoperator in einem Schritt kombiniert werden?Klar.
-
Ich nehme an, dass man eigentlich auf jeden Pointer vezichten könnte.
Das ja nun nicht, bei dynamischen Arrays oder auf dem Heap abgelegten Speicher funktioniert dies nicht.
MfG mAV
-
Er hat ganz sicher gemeint, dass er keinen Pointer erstellen muss, um einen zu übergeben.