Association de C ++ (union C ++)




Les syndicats c ++, union c ++, rapport, travaux de coursunited Technologies syndicat Il a ses origines dans les années 90. ordinateur faible pour notre temps (Maintenant, leurs ordinateurs et il ne peut pas être appelé), une mémoire insuffisante (kilobytes tous mesurés). Disques durs pour 40 mégaoctet était presque un miracle de la technologie, personnifiant ogromennye quantités d'informations, artisans qui “calibre” logiciel spécial pour le stockage 80 MB (donc ça a été un peu plus). Chaque octet de la mémoire était à une prime, Je devais économiser sur tout. que union variable a été également destiné (et tout à fait avec succès, comme je l'expliquerai ci-dessous) aider le programmeur à faire programme optimal et économique, “manger” de petites quantités de mémoire.

Pour comprendre quel est le sens de l'association doivent se rappeler comment stocker des variables. Différents types de variables ou le même type de groupe (comme int, longue et court) malgré le travail avec le même type de données, (Je veux dire l'ensemble) est en mémoire d'un nombre différent d'octets. longue en tout cas, il faut un nombre maximum d'octets dans la mémoire, en même temps dans la mémoire pour une variable de ce type, il est possible d'écrire la valeur int ou court. Juste obtenir, octets que tous réservés longue-et seront en demande. Si vous mettez par exemple le nombre de 325 dans longue, deux octets sont occupés (Elle dépend du processeur de bits), et les octets restants sont remplis avec des zéros.

Il est dans ce sens semble syndicat, Pour cette déclaration indique au compilateur: “Réserver une place pour moi pour un type de données avec une mémoire de requête maximale, et je vais trier lui-même, comment et quelle valeur à mettre en eux”.

union – est un format de données, qui est semblable structure. il (union) capable de stocker à l'intérieur une zone de mémoire réservée différents types de données. Mais, à un moment donné, il est stocké en association un seul de ces types de données, et peut utiliser seulement la valeur de l'élément (composant). définir Syntaxiquement le syndicat (très semblable à la définition de la structure):

éléments d'accès association est également, ainsi que les éléments de la structure: Le nom de l'association MyUnion , point . et le nom de l'élément nom1 .

données, qui stockent des éléments structure (par exemple court, int, longue) nous pouvons accéder à tout moment (au moins un, mais tout à la fois). dans fusionnement les données peuvent être stockées court, ou int, ou longue. par exemple:

Exécutez le programme:

Les syndicats c ++, union c ++, rapport, travaux de cours

Comme vous pouvez le voir, après, nous avons enregistré la valeur dans l'élément nom3 type long int , normalement plus possible d'accéder à l'élément nom1 . En effet,, que leur la mémoire partagée valeur déjà enregistrée long int, et le type de variable short int incapable de travailler avec un tel volume de données. De façon schématique, il peut être représenté comme:

Les syndicats c ++, union c ++, rapport, travaux de cours

donc, de travailler encore une fois avec le type de données short int vous devez attribuer à nouveau l'élément nom1 un nouveau sens. Donc, il se trouve – La mémoire d'une seule et même, et les variables qu'il contient sont placés différents. Quelle appel – et de telles demandes à partir de cette valeur en mémoire.

Eléments d'union disposés dans la mémoire à partir d'un endroit (comme il a été superposées les unes des autres), en contraste avec les éléments structurels (elles sont stockées dans la mémoire successivement, l'un après l'autre).

Application de l'association en raison de la nécessité d'économiser de la mémoire, lorsque vous avez besoin de stocker et d'utiliser des types de données, mais pour y accéder, vous ne pouvez pas en même temps.

Si nous décrivons un ensemble de variables ne sont pas les apportait syndicat, puis en les plaçant exigeraient 2 + 4 + 4 bytes = 10 octet. Cela épargne. Et le syndicat prend 4 octet. Autant que 6 octet sauvé, natrambovav trois variables dans un segment de mémoire.

Par la façon dont il convient de noter, que cette technologie a réussi à obtenir une bonne continuation, et dans les langues modernes utilisées partout où il est nécessaire et ne pas besoin. SiŞarp, PHP, Delphes, héritiers modernes C plus plus – ils utilisent toutes ces associations. Seulement dans le monde moderne, ils sont appelés une variante. la variable une variante Vous pouvez facilement pousser jusqu'à 10 octet (10 c'est le maximum pour les systèmes 32 bits sous le numéro réel). Par conséquent, ceux-ci 10 octet et toute la famille de nombre entier et réel, et pointeurs, objets, et la ligne (traite plus précisément des chaînes ou des pointeurs vers les) s'adapter.

Aujourd'hui, les économies de mémoire ne sont pas pertinentes, comment 15-20 ans. Bien sûr, personne interdit d'utiliser syndicat, mais pourquoi? S'il y a plus commode pour aujourd'hui signifie travailler avec programmateur de mémoire.

Il convient également de noter, que, pour effectuer une mémoire de programme chargée avec un excès de (à savoir. pour programmer la quantité de mémoire allouée, très souvent plus que nécessaire). Ceci peut être observé, l'écriture d'un programme avec une variable. il semblerait – variable 4 octet, mais en ouvrant le Gestionnaire des tâches dans le logiciel Windows “en quelque sorte” a pris 10 kilooctet. Ceci est la façon dont le système d'exploitation moderne, l'allocation de mémoire avec une vengeance. Dans le 90, hélas, et ne pouvait pas être un luxe.

Dans la prochaine leçon, nous examinerons les champs de bits en C ++. Prenez le temps de regarder une vidéo sur le thème de l'Association (syndicat) C ++:

Bulletin de nouvelles leçons sur la programmation:

Association de C ++ (union C ++)
3 (60%) 2 votes

Laisser un commentaire

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *