Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Les unions en C : Gestion mémoire efficace pour types multiples

Une union est un type spécial en C permettant de stocker différents types de données au même emplacement mémoire. Vous définissez une union avec plusieurs membres, mais un seul membre peut contenir une valeur à un instant donné. Les unions offrent un moyen efficace d'utiliser le même emplacement mémoire pour plusieurs usages.

Définition d'une union

Utilisez l'instruction union comme pour struct :

union [balise_union] {
    définition_membre;
    définition_membre;
    ...
} [variables_union];

Exemple union Data avec trois membres :

union Data {
    int i;
    float f;
    char str[20];
} data;

Une variable de type Data peut stocker un entier, un flottant, ou une chaîne. Un seul emplacement mémoire pour plusieurs types. La mémoire occupée = taille du plus grand membre (ici 20 octets pour str[20]).

Exemple : taille mémoire

#include <stdio.h>
#include <string.h>
union Data { int i; float f; char str[20]; };
int main() {
    union Data data;
    printf("Taille mémoire : %zu octets\n", sizeof(data));
    return 0;
}

Résultat : Taille mémoire : 20 octets

Accès aux membres d'une union

Opérateur . (point) comme pour les structures. Mot-clé union pour déclarer.

Exemple : corruption si plusieurs membres utilisés

#include <stdio.h>
#include <string.h>
union Data { int i; float f; char str[20]; };
int main() {
    union Data data;
    data.i = 10;
    data.f = 220.5;
    strcpy(data.str, "C Programming");
    printf("data.i   : %d\n", data.i);
    printf("data.f   : %f\n", data.f);
    printf("data.str : %s\n", data.str);
    return 0;
}

Résultat (valeurs corrompues pour i et f) :

data.i   : 1917853763
data.f   : 4122360580327794860452759994368.000000
data.str : C Programming

Seul le dernier membre écrit (str) conserve une valeur correcte.

Exemple : utilisation correcte (un membre à la fois)

#include <stdio.h>
#include <string.h>
union Data { int i; float f; char str[20]; };
int main() {
    union Data data;
    data.i = 10;
    printf("data.i : %d\n", data.i);
    data.f = 220.5;
    printf("data.f : %f\n", data.f);
    strcpy(data.str, "C Programming");
    printf("data.str : %s\n", data.str);
    return 0;
}

Résultat :

data.i : 10
data.f : 220.500000
data.str : C Programming

Tous les membres s'affichent correctement car un seul est utilisé à la fois.

Langue C

  1. Microprocesseurs : l'évolution de l'informatique à programme stocké
  2. Données Complètes Ampli Op : Fiches Techniques National Semiconductor & CA3130
  3. Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
  4. Types de données en C expliqués : int, float, char et plus — Guide complet
  5. Les unions en C expliquées : Définition, utilisation et comparaison avec les structures
  6. Maîtriser les types de données Python : Guide pratique
  7. Comprendre les types de données en C : Guide complet
  8. Structures de données en C++ : Construire des programmes efficaces avec tableaux, structures et plus
  9. Maîtriser l'abstraction de données en C++ : Simplifier la conception par séparation interface-implémentation