Maison > développement back-end > C++ > Expliquer les qualificatifs de type volatile et restreint en langage C, avec un exemple

Expliquer les qualificatifs de type volatile et restreint en langage C, avec un exemple

王林
Libérer: 2023-09-10 22:25:01
avant
835 Les gens l'ont consulté

Les qualificateurs de type ajoutent des propriétés spéciales aux types de données existants dans le langage de programmation C.

Expliquer les qualificatifs de type volatile et restreint en langage C, avec un exemple

Il existe trois qualificatifs de type en langage C, parmi lesquels les qualificatifs de type volatiles et restreints sont expliqués comme suit -

Volatile

Un qualificatif de type volatile est utilisé pour indiquer au compilateur que les variables sont partagées. Autrement dit, si une variable est déclarée volatile, elle peut être référencée et modifiée par d'autres programmes (ou) entités.

Par exemple, volatile int x;

Limitations

Cela ne fonctionne qu'avec des pointeurs. Cela montre que les pointeurs ne constituent que le premier moyen d’accéder aux données référencées. Il fournit plus d'aide pour l'optimisation du compilateur.

Exemple de programme

Ce qui suit est un programme C avec un qualificatif de type volatile -

   int *ptr
   int a= 0;
   ptr = &a;
   ____
   ____
   ____
      *ptr+=4; // Cannot be replaced with *ptr+=9
   ____
   ____
   ____
      *ptr+=5;
Copier après la connexion

Ici, le compilateur ne peut pas remplacer les deux instructions *ptr+=4 et *ptr+=5 par une seule instruction *ptr+=9. Parce qu'il n'est pas clair si la variable "a" est accessible directement (ou) via d'autres pointeurs.

Par exemple,

   restrict int *ptr
   int a= 0;
   ptr = &a;
   ____
   ____
   ____
      *ptr+=4; // Can be replaced with *ptr+=9
   ____
   ____
      *ptr+=5;
____
   ____
Copier après la connexion

Ici, le compilateur peut remplacer deux instructions par une seule, *ptr+=9. Parce que, bien sûr, la variable n’est accessible via aucune autre ressource.

Exemple

Ce qui suit est un programme C utilisant le mot-clé restrict -

Démonstration en direct

#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;
}
Copier après la connexion

Sortie

Lorsque le programme ci-dessus est exécuté, les résultats suivants sont produits -

40 50 30
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal