Association de C ++ (union C ++)




Les syndicats c ++, union c ++, rapport, travaux de coursТехнология объединений 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é), мало памяти (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.

Чтобы понять в чем смысл объединения нужно вспомнить как хранятся переменные. 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) занимают в памяти разное количество байт. longue en tout cas, il faut un nombre maximum d'octets dans la mémoire, при этом в память для переменной этого типа вполне можно записать значения 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: “Зарезервируй мне место для типа данных с максимальным запросом объема памяти, et je vais trier lui-même, comment et quelle valeur à mettre en eux”.

unionэто такой формат данных, 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):

Доступ к элементам объединения осуществляется так же, как и к элементам структур: Le nom de l'association MyUnion , point . и имя элемента 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 могут храниться данные либо 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, как мы записали значение в элемент nom3 type long int , normalement plus possible d'accéder à l'élément nom1 . En effet,, что в их la mémoire partagée уже записано значение long int, а переменная типа 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, чтобы опять работать с данными типа short int необходимо снова присвоить элементу 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. К какой обращаемсятакая и запрашивает из этой памяти значение.

Элементы объединения располагаются в памяти начиная с одного места (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, но обращаться к ним можно не одновременно.

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é, натрамбовав три переменные в один отрезок памяти.

Par la façon dont il convient de noter, que cette technologie a réussi à obtenir une bonne continuation, и в современных языках используется везде где нужно и не нужно. 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. В переменную 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, никто не запрещает использовать 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). Это можно наблюдать, 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” заняла 10 килобайт. 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:

date
page
Association de C ++ (union C ++)
évaluation
51étoile1étoile1étoile1étoile1étoile

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>