Zeiger in C ++ initialisieren

8

Kann einen Zeiger auf einen Wert bei der Deklaration zuweisen? Etwas wie das:

%Vor%     
Alex 22.05.2009, 22:28
quelle

4 Antworten

22

Ja, Sie können Zeiger auf einen Wert bei der Deklaration initialisieren, jedoch nicht:

%Vor%

& amp; ist die -Adresse des -Operators und Sie können das nicht auf eine Konstante anwenden (obwohl, wenn Sie könnten, wäre das interessant). Versuchen Sie es mit einer anderen Variablen:

%Vor%

oder Typ-Casting:

%Vor%     
Adam Markowitz 22.05.2009, 22:33
quelle
7

In der Frage sind mir zwei Dinge nicht klar. Möchten Sie den Zeiger auf einen bestimmten Wert (z. B. Adresse) festlegen oder möchten Sie den Zeiger auf eine bestimmte Variable zeigen?

Im letzteren Fall können Sie einfach den Adressoperator verwenden. Der Wert des Zeigers wird dann auf die Adresse von some_int_variable gesetzt.

%Vor%

Hinweis : Was folgt, ist eine schlechte Änderung des Zeigerwertes von Hand. Wenn Sie nicht wissen, ob Sie das tun wollen, wollen Sie es nicht tun.

Im ersteren Fall (d. h. Einstellung auf eine bestimmte Adresse) können Sie nicht einfach

tun %Vor%

Da der Compiler den int nicht übernimmt und ihn als Adresse interpretiert. Sie müssen dem Compiler sagen, dass er dies explizit tun sollte:

%Vor%

Nun wird der Zeiger auf eine ganze Zahl (hoffentlich) bei Adresse 1000 verweisen. Beachten Sie, dass das Ergebnis eine Implementierung ist. Aber das ist die Semantik und das ist die Art, wie Sie dem Compiler davon erzählen.

Update : Das Komitee hat das seltsame Verhalten von reinterpret_cast<T*>(0) korrigiert, das von einer Notiz vorgeschlagen wurde und für die ich zuvor einen Workaround bereitgestellt habe. Siehe hier .

    
Johannes Schaub - litb 22.05.2009 22:52
quelle
4

Was ist mit:

%Vor%

Getestet und funktioniert. ; -)

    
Tom Wijsman 22.05.2009 22:40
quelle
2

Ähm. Ich glaube nicht, dass du eine nicht konstante Adresse einer solchen Konstante nehmen kannst.

aber das funktioniert:

%Vor%

oder das:

%Vor%     
Macke 22.05.2009 22:35
quelle

Tags und Links