Heim > Backend-Entwicklung > C++ > Erklären Sie anhand eines Beispiels die Typqualifizierer „volatile' und „restrict' in der Sprache C

Erklären Sie anhand eines Beispiels die Typqualifizierer „volatile' und „restrict' in der Sprache C

王林
Freigeben: 2023-09-10 22:25:01
nach vorne
836 Leute haben es durchsucht

Typqualifizierer fügen spezielle Eigenschaften zu vorhandenen Datentypen in der Programmiersprache C hinzu.

Erklären Sie anhand eines Beispiels die Typqualifizierer „volatile und „restrict in der Sprache C

In der C-Sprache gibt es drei Typqualifizierer, von denen flüchtige und eingeschränkte Typqualifizierer wie folgt erklärt werden:

Volatile

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;

Einschränkungen

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;
Nach dem Login kopieren

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;
____
   ____
Nach dem Login kopieren

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.

Beispiel

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;
}
Nach dem Login kopieren

Ausgabe

Wenn das obige Programm ausgeführt wird, werden die folgenden Ergebnisse erzeugt –

40 50 30
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage