Maison >développement back-end >C++ >Expliquer les pointeurs d'union en langage C

Expliquer les pointeurs d'union en langage C

王林
王林avant
2023-09-12 13:45:04655parcourir

Expliquer les pointeurs dunion en langage C

Une union est un emplacement mémoire partagé par plusieurs variables de différents types de données.

Syntaxe

La syntaxe du pointeur vers l'union dans la programmation C est la suivante -

union uniontag{
   datatype member 1;
   datatype member 2;
   ----
   ----
   datatype member n;
};

Exemple

L'exemple suivant montre l'utilisation de l'union des structures.

union sample{
   int a;
   float b;
   char c;
};

Déclaration des variables conjointes

Ce qui suit est la déclaration des variables conjointes. Il a trois types comme suit −

Type 1

union sample{
   int a;
   float b;
   char c;
}s;

Type 2

est traduit par :

Type 2

union{
   int a;
   float b;
   char c;
}s;

Type 3

est traduit par :

Type 3

union sample{
   int a;
   float b;
   char c;
};
union sample s;
  • Lorsqu'une union est déclarée, compilez le Le compilateur crée automatiquement des types de variables de la plus grande taille pour s'adapter aux variables de l'union.

  • Une seule variable peut être référencée à tout moment.

  • Utilisez la même syntaxe structurelle pour accéder aux membres du syndicat.

  • L'opérateur point est utilisé pour accéder aux membres.

  • L'opérateur flèche (->) est utilisé pour accéder aux membres à l'aide de pointeurs.

Nous pouvons utiliser des pointeurs vers des syndicats et utiliser l'opérateur fléché (->) pour accéder aux membres, tout comme une structure.

Exemple

Le programme suivant montre l'utilisation du pointeur vers l'union dans la programmation C -

Live Demo

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 75;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

Output

Lorsque le programme ci-dessus est exécuté, il produit le résultat suivant −

75 K

Exemple 2

Considérez le même exemple avec des entrées différentes.

Démonstration en direct

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 90;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

Sortie

Lorsque le programme ci-dessus est exécuté, il produit les résultats suivants −

90 Z

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer