2017-10-13 5 views
1

Warum würde man einen flüchtigen Zeiger erstellen? Und angenommen, ich möchte ein flüchtigen Zeiger, der Variable auf einen flüchtigen Punkte, die die folgenden Erklärungen dies erreichen würde:C - Verwendung eines flüchtigen Zeigers

volatile int *pData; 

oder

volatile int * volatile pData; 
+0

Sie wissen, warum eine Variable volatil ist? – Yunnosch

+0

@Yunnosch Soweit ich weiß, wird es verwendet, um dem Compiler mitzuteilen, dass sich die Variable jederzeit ändern kann und daher im Speicher gehalten werden muss. Aber ich bin nicht sicher, warum irgendjemand einen flüchtigen Zeiger verwenden würde. – Trey

+1

Sicher erwartet Ihr Ausbilder Sie entweder (i) beziehen sich auf Ihre Vorlesungsnotizen; (ii) konsultieren Sie Ihre empfohlene Lektüre; oder (iii) denke darüber nach. Wenn (iii), dann solltest du wenigstens etwas * deiner Gedankengänge präsentieren können. –

Antwort

3

Warum sollte man ein flüchtiges erstellen Zeiger?

Beispiel: Zugriff auf Daten, deren Zeiger durch einen Hintergrundprozess aktualisiert wird.

Stuff * volatile VideoFrame; 
for (;;) { 
    Block_Changes(); 
    Stuff MyCopy = *VideoFrame; 
    Allow_Changes(); 
    Use(&MyCopy); 
} 

Ich möchte einen flüchtigen Zeiger, der auf eine flüchtige Variable verweist, die die folgenden Erklärungen dies erreichen würde:

Das 2 nd trifft das Ziel. volatile int * volatile pData; ist a:
pData as volatile pointer to volatile int


Die 1 stvolatile int *pData; ist ein nichtflüchtiger Zeiger auf flüchtige Daten:
pData as pointer to volatile int

volitle Das Schlüsselwort wird häufig in diesem Zusammenhang verwendet. @ Eugene Sh.

0

Ein Grund für die Verwendung des Modifikators `volatile 'ist, dass der Compiler die Variable nicht aus der Existenz optimiert.

Ein weiterer Grund für die Verwendung des Modifikators 'volatile' ist, dass der Code immer auf die aktuelle Variable und nicht auf den in einigen Registern verbleibenden Wert zugreift, wenn der Code auf diese Variable verweist.

Ein weiterer Grund für die Verwendung des Modifikators 'flüchtig' ist, wenn sich der Variablenwert außerhalb der Kontrolle des aktuellen Programms ändern kann. Zum Beispiel ein Hardware-Register oder wenn ein 'Interrupt' die Variable aktualisiert, die Ihre Anwendung liest.

Verwandte Themen