2012-11-06 7 views
7
volatile void * ptr; 

Ob ptr ist volatile oder es zeigt auf die volatile location.Was bedeutet diese volatile mit Zeigern in C?

Also der eigentliche Zweifel ist: Ist die gleiche Sache auf die obige Erklärung angewendet, wie es mit const Qualifier angewendet?

Kleine Erklärung wird mir sehr helfen.

Antwort

8

Es ist ein Zeiger auf flüchtige Daten. Wenn der Zeiger selbst flüchtig sein sollte, aber nicht die Daten, die er zeigt auf, dann würden Sie verwenden:

void * volatile ptr; 

Also ja, es auf die gleiche Weise wie der const Modifikator arbeitet.

+0

oh thnx .. es bedeutet das gleiche wie 'const' ..Wir setzen' const' vor und nach dem '*' und die Bedeutung wechselt nach rechts? – Omkant

+2

Ja; 'flüchtige void * ptr' =' void volatile * ptr' – Kos

4

A Microsoft explanation:

Das flüchtige Schlüsselwort gibt an, dass der Wert mit dem Namen assoziiert, der durch andere Aktionen als diejenigen, die in der Benutzeranwendung modifiziert werden kann, folgt.

Das Schlüsselwort volatile ist nützlich zum Deklarieren von Objekten im Shared Memory, auf die von mehreren Prozessen zugegriffen werden kann.

+1

Sowie Speicheradressen, die ein Stück Hardware darstellen, anstatt tatsächlichen Speicher z. die "Adresse" eines seriellen Anschlusses oder einer DMA-Festplatte oder etwas ähnliches. –

2

Sowohl const als auch volatile sind type qualifiers (sie sind die einzigen Typ-Qualifier in C, in der Tat). Die Syntax für ihre Verwendung ist identisch.