Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

C - Sindicatos


Um sindicato é um tipo de dado especial disponível em C que permite armazenar diferentes tipos de dados no mesmo local de memória. Você pode definir uma união com muitos membros, mas apenas um membro pode conter um valor em um determinado momento. As uniões fornecem uma maneira eficiente de usar o mesmo local de memória para várias finalidades.

Definindo uma União


Para definir uma união, você deve usar a união declaração da mesma forma que você fez ao definir uma estrutura. A instrução union define um novo tipo de dados com mais de um membro para seu programa. O formato da declaração de união é o seguinte -
union [union tag] {
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

A tag de união é opcional e cada definição de membro é uma definição de variável normal, como int i; ou flutuar f; ou qualquer outra definição de variável válida. No final da definição da união, antes do ponto e vírgula final, você pode especificar uma ou mais variáveis ​​de união, mas é opcional. Aqui está a maneira como você definiria um tipo de união chamado Data com três membros i, f e str −
union Data {
   int i;
   float f;
   char str[20];
} data;  

Agora, uma variável de Dados type pode armazenar um inteiro, um número de ponto flutuante ou uma string de caracteres. Isso significa que uma única variável, ou seja, mesmo local de memória, pode ser usada para armazenar vários tipos de dados. Você pode usar qualquer tipo de dados integrado ou definido pelo usuário dentro de uma união com base em seus requisitos.

A memória ocupada por um sindicato será grande o suficiente para conter o maior membro do sindicato. Por exemplo, no exemplo acima, Data type ocupará 20 bytes de espaço de memória porque este é o espaço máximo que pode ser ocupado por uma string de caracteres. O exemplo a seguir exibe o tamanho total da memória ocupada pela união acima -
Demonstração ao vivo
#include <stdio.h>
#include <string.h>
 
union Data {
   int i;
   float f;
   char str[20];
};
 
int main( ) {

   union Data data;        

   printf( "Memory size occupied by data : %d\n", sizeof(data));

   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Memory size occupied by data : 20

Acessando membros do sindicato


Para acessar qualquer membro de um sindicato, usamos o operador de acesso de membro (.) . O operador de acesso ao membro é codificado como um ponto entre o nome da variável da união e o membro da união que desejamos acessar. Você usaria a palavra-chave união para definir variáveis ​​do tipo união. O exemplo a seguir mostra como usar uniões em um programa -
Demonstração ao vivo
#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;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

Aqui, podemos ver que os valores de i e f membros da união foram corrompidos porque o valor final atribuído à variável ocupou o local da memória e esta é a razão pela qual o valor de str membro está sendo impresso muito bem.

Agora vamos olhar para o mesmo exemplo mais uma vez, onde usaremos uma variável de cada vez, que é o objetivo principal de ter uniões -
Demonstração ao vivo
#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;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
data.i : 10
data.f : 220.500000
data.str : C Programming

Aqui, todos os membros estão sendo impressos muito bem porque um membro está sendo usado de cada vez.

Linguagem C

  1. Microprocessadores
  2. Dados Op-Amp
  3. Tipos de dados C++
  4. Tipos de dados C
  5. C União
  6. Tipos de dados Python
  7. C - Tipos de dados
  8. Estruturas de dados C++
  9. Abstração de dados em C++
  10. Encapsulamento de dados em C++