«Tout comme les structures, les syndicats sont également des datatypes définis par l'utilisateur, mais contrairement aux structures, les membres du syndicat partagent le même emplacement de mémoire et ils n'ont pas de lieux de mémoire différents. Si nous déclarons deux variables dans une structure, puis vérifions leur adresse, nous verrons que les deux ont des adresses différentes, ce qui signifie que les membres d'une structure obtiennent des emplacements de mémoire différents. Au lieu de cela, nous déclarons les deux mêmes variables dans un syndicat et vérifions leurs adresses; On observera que leurs deux adresses sont les mêmes, ce qui prouve que les deux constantes partagent le même emplacement de mémoire. Dans le cas de la structure, un entier prendra quatre blocs, mais dans un syndicat, l'entier et le caractère partageront le même bloc de mémoire.
Une chose à garder à l'esprit est que dans un syndicat, les membres partageront le même emplacement de mémoire, ce qui signifie que si des modifications sont apportées en un seul membre, ils seront également reflétés dans les autres membres du syndicat. La taille du syndicat est prise en fonction de la taille du plus grand membre d'un syndicat. Les membres du syndicat sont accessibles via des pointeurs en utilisant l'opérateur (>). Si nous voulons stocker des informations sur plusieurs objets comme les livres et les magasins, nous devrons faire deux structures pour chacun d'eux. Il gaspillera beaucoup de mémoire. À cette fin, les syndicats sont utilisés. Les syndicats peuvent enregistrer des informations sur plusieurs objets."
Syntaxe
La syntaxe pour déclarer un syndicat est la suivante:
La syntaxe pour les syndicats et la structure est presque la même. La différence entre l'union et la structure est que nous utilisons le mot-clé Union au lieu de Struct pour déclarer les syndicats. Dans la section Variables, nous pouvons voir que nous avons déclaré plusieurs variables de différents types de données. C'est la même chose que les structures, mais dans les structures, ces variables peuvent être liées à un seul objet, comme un livre ou un étudiant ou une classe, etc. Mais dans les syndicats, nous pouvons déclarer des variables pertinentes à plus d'un seul objet. Par exemple, nous pouvons déclarer la durée d'une table et aussi le titre du livre sur la table.
Exemple 1
Dans cet exemple, nous avons créé un syndicat et lui avons donné le nom «test_union». Dans le bloc des variables, nous avons déclaré deux variables en tant que membres de notre syndicat. Entier «x» et caractère «y». Avec le support de clôture, il existe une variable de type Union «Test_Union."Nous pouvons également déclarer une variable de type syndical comme dans les structures. Avec l'aide de «variable1», nous pouvons accéder aux membres de notre syndicat. À l'intérieur de la fonction principale (), par l'utilisation de l'opérateur de points, nous pouvons accéder aux variables déclarées dans l'Union. Ici, nous attribuons la valeur «75» à «x."Notez que nous n'avons attribué aucune valeur à notre variable« y ».
#inclure
Union test_union
int x;
char y;
variable1;
int main()
variable1.x = 75;
printf ("x =% d \ n", variable1.X);
printf ("y =% c \ n", variable1.y);
retour 0;
Une fois notre code exécuté, nous obtiendrons la sortie affichée dans la figure ci-dessous. Nous avons imprimé «X» et sa valeur de la même manière; Nous avons imprimé «Y» et sa valeur contre lui. La chose qui doit être informée est que nous n'avons attribué aucune valeur à Y. Dans notre sortie, nous pouvons voir que le compilateur a imprimé «X» et une valeur de «75» contre lui. Mais contre «y», il a imprimé «k."Vous vous demandez peut-être pourquoi nous avons cette capitale" K "comme sortie pour" Y.«Valeur« 75 »pour« x »n'est pas un problème. Mais «y» est un caractère sur lequel le compilateur a imprimé sa valeur même lorsque nous avons transmis un nombre à «x."
En effet. Nous avons déclaré «variable1» pour notre syndicat et adopté la valeur en utilisant cette variable. Variable1 a attribué la valeur 75 à tous les membres de l'Union. Int a pris cette valeur en nombre et a imprimé la même valeur. Mais le personnage a pris cette valeur en tant que code ASCII et a converti ce code ASCII en personnage contre lui. Le code ASCII pour la capitale «K» est «75», il a donc remplacé «75» par «k."C'est tout le processus d'union allouant le même bloc de mémoire aux variables.
Exemple 2
Dans ce cas, nous découvrirons comment le syndicat utilise la mémoire. À cette fin, nous avons déclaré un syndicat comme exemple_union. Dans Exemple_Union, nous avons déclaré quatre constantes et chacune avec des données de données différentes. Nous avons déclaré int var1, char var2, double var3 et float var4 en tant que membres de notre syndicat. Dans la méthode principale, nous avons imprimé une instruction avec la fonction sizeof (). Fonction sizeof () est une fonction par défaut dans le langage C qui obtient la taille de tout objet de notre code. Nous l'avons passé le nom de notre syndicat parce que nous voulons obtenir la taille de notre syndicat.
#inclure
Exemple de l'Union_Union
int var1;
char var2;
double var3;
float var4;
;
int main()
printf ("% ld \ n", sizeof (Union Example_Union));
retour 0;
Ceci est la sortie après la compilation de notre code. Nous obtiendrons la sortie de 8. Dans mon système, la taille de l'entier est de 4 octets, la taille du caractère est de 1 octet, la taille d'un double est de 8 octets et la taille d'un flotteur est à nouveau de 4 octets. Dans notre cas, la taille d'un double est de 8, ce qui est la plus grande de toutes tailles, donc le compilateur a alloué la taille 8 à notre syndicat. Maintenant, nous pouvons mieux comprendre que la taille de la variable la plus élevée est allouée à tous les données, et la somme de leurs tailles n'est pas utilisée par le compilateur comme dans le cas de la structure. C'est pourquoi nous obtiendrons le résultat 8 comme sortie.
Conclusion
Dans ce guide, nous avons discuté des syndicats en C. Juste pour comprendre le concept des syndicats, on peut dire que les syndicats sont presque les mêmes que les structures. Mais la principale différence est l'allocation de la mémoire. Il est très efficace lors de l'écriture de code complexe car, à ce moment-là, un programmeur se concentre sur l'efficacité du code. Un bon programmeur essaie toujours d'occuper le moins de mémoire du système par son code; Les syndicats les aident à le faire. Nous avons livré de notre mieux pour vous aider à comprendre les syndicats en mettant en œuvre et en expliquant des exemples. À la fin du sujet, nous pouvons dire que l'utilisation des syndicats est une bonne approche pour gérer plusieurs enregistrements ainsi que l'écriture de code optimisé et réglé. Il aidera également le codeur à optimiser le code pour de meilleures performances.