Typqualifizierer fügen spezielle Eigenschaften zu vorhandenen Datentypen in der Programmiersprache C hinzu.
In der C-Sprache gibt es drei Typqualifizierer, von denen flüchtige und eingeschränkte Typqualifizierer wie folgt erklärt werden:
Ein flüchtiger Typqualifizierer wird verwendet, um dem Compiler mitzuteilen, dass Variablen gemeinsam genutzt werden. Das heißt, wenn eine Variable als flüchtig deklariert ist, kann sie von anderen Programmen (oder Entitäten) referenziert und geändert werden.
Zum Beispiel volatile int x;
Dies funktioniert nur mit Zeigern. Es zeigt, dass Zeiger nur die erste Möglichkeit sind, auf referenzierte Daten zuzugreifen. Es bietet weitere Hilfe zur Compileroptimierung.
Beispielprogramm
Das Folgende ist ein C-Programm mit dem flüchtigen Typqualifizierer -
int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Cannot be replaced with *ptr+=9 ____ ____ ____ *ptr+=5;
Hier kann der Compiler die beiden Anweisungen *ptr+=4 und *ptr+=5 nicht durch eine Anweisung *ptr+=9 ersetzen. Denn es ist nicht klar, ob auf die Variable „a“ direkt (oder) über andere Zeiger zugegriffen werden kann.
Zum Beispiel:
restrict int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Can be replaced with *ptr+=9 ____ ____ *ptr+=5; ____ ____
Hier kann der Compiler zwei Anweisungen durch eine Anweisung ersetzen, *ptr+=9. Denn mit Sicherheit kann über keine andere Ressource auf die Variable zugegriffen werden.
Das Folgende ist ein C-Programm, das das Schlüsselwort „restrict“ verwendet –
Live-Demonstration
#include<stdio.h> void keyword(int* a, int* b, int* restrict c){ *a += *c; // Since c is restrict, compiler will // not reload value at address c in // its assembly code. *b += *c; } int main(void){ int p = 10, q = 20,r=30; keyword(&p, &q,&r); printf("%d %d %d", p, q,r); return 0; }
Wenn das obige Programm ausgeführt wird, werden die folgenden Ergebnisse erzeugt –
40 50 30
Das obige ist der detaillierte Inhalt vonErklären Sie anhand eines Beispiels die Typqualifizierer „volatile' und „restrict' in der Sprache C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!