So initialisieren Sie einen Zeiger auf eine bestimmte Speicheradresse in C ++ [duplizieren]

7

Eine interessante Diskussion darüber begann hier , aber niemand war in der Lage, C ++ zur Verfügung zu stellen:

%Vor%

Was ist der beste Weg, um so etwas in C ++ zu tun?

    
karlphillip 14.10.2010, 15:22
quelle

5 Antworten

19

In C ++ bevorzugen Sie immer reinterpret_cast gegenüber einem C-Cast. Es ist so hässlich, dass jemand sofort die Gefahr erkennen kann.

Beispiel:

%Vor%

Das Ding tut meinen Augen weh, und ich mag es.

    
Coincoin 14.10.2010, 15:27
quelle
1

Es gibt KEINE standardmäßige und portable Möglichkeit, dies zu tun. Nicht übertragbare Wege können reinterpret_cast (someIntRepresenttingTheAddress) enthalten.

    
Armen Tsirunyan 14.10.2010 15:24
quelle
1

Ich würde hinzufügen, dass Sie den Platzierungsoperator für neu aufrufen können, wenn Sie einen Objektkonstruktor aufrufen möchten, wenn Sie ihn an der angegebenen Adresse zuweisen:

%Vor%

Dies wird auch für Speicher-Caching-Objekte verwendet. Erstellen Sie einen Puffer und weisen Sie ihm ein Objekt zu.

%Vor%     
Dan 15.10.2010 01:50
quelle
0

Das wird funktionieren:

%Vor%     
Michael Goldshteyn 14.10.2010 15:26
quelle
0

In C ++ bevorzuge ich die Deklaration der Zeiger als konstante Zeiger in einer Header-Datei:

%Vor%

In der C-Sprache wird dies normalerweise mithilfe eines Makros implementiert:

%Vor%

Im Rest des Quellcodes wird die Speicheradresse über den symbolischen Namen referenziert.

    
Thomas Matthews 14.10.2010 16:03
quelle

Tags und Links