Ir para conteúdo
Fórum Script Brasil

qisdo

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que qisdo postou

  1. Pois então, tenho áreas de estudo em microcontroladores onde a memória é limitada e o uso de uniões pode ser interessante. Para o computador realmente não se faz necessário, mas como bom programador é sempre bom conhecer todos os recursos. Na bibliografia encontrei a explicação do compartilhamento de memória e parei ali, porque ainda não tinha caído a ficha. :) Obrigado pela dica, parabéns pelo texto e exemplos, que sinceramente, foi muito útil para o entendimento. Abraço.
  2. Olá, estou com uma dúvida referente a saída deste código: #include <stdio.h> #include <stdlib.h> typedef union { //uniao compartilha os dados char A[2]; struct xar //para acessar nome_da_variavel_da_estrutura.nome_do_elemento //Quando uma variável de estrutura é declarada, o compilador C aloca automaticamente memória suficiente para acomodar todos os seus membros. { char B; //elemento da estrutura char C; }carac; // nome da variavel da estrutura } PosCompType; int main() { PosCompType Dado; Dado.A[0] = 'a'; Dado.A[1] = 'b'; Dado.carac.B = 'c'; Dado.carac.C = 'd'; printf("%c %c %c %c\n", Dado.A[0], Dado.A[1], Dado.carac.B, Dado.carac.C); return 0; } No console o resultado do printf não deveria ser abcd? Por que esta saindo cdcd? Será que é pelo fato de a união compartilhar memória? Troquei a ordem para: Dado.carac.B = 'c'; Dado.carac.C = 'd'; Dado.A[0] = 'a'; Dado.A[1] = 'b'; E o resultado sai abab, indiciando que os últimos valores corrompem os primeiros. Alguma explicação?
×
×
  • Criar Novo...