Compartilhar via


Aggregates and Unions

Outros tipos como matrizes, estruturas, e uniões têm um requisitos mais restritos de alinhamento que assegurem a agregação consistente e armazenamento e recuperação de dados de união.Aqui estão as definições para a matriz, a estrutura, e a união:

  • Matriz
    Contém um grupo ordenado de objetos de dados adjacentes.Cada objeto é chamado um elemento.Todos os elementos de uma matriz têm o mesmo tamanho e o tipo de dados.

  • Estrutura
    Contém um grupo ordenado de objetos de dados.Ao contrário dos elementos de uma matriz, os objetos de dados em uma estrutura podem ter tipos de dados e tamanhos diferentes.Cada objeto de dados em uma estrutura é chamado um membro.

  • União
    Um objeto que contém qualquer de um conjunto de membros nomeados.Os membros do conjunto chamado podem ser de qualquer tipo.O armazenamento atribuído para uma união é igual ao armazenamento necessário para o membro maior da união, mais qualquer preenchimento necessário para o alinhamento.

A tabela a seguir mostra o alinhamento fortemente sugerido para os membros escalares de uniões e estruturas.

Tipo escalar

Tipo de dados de C

Alinhamento necessário

INT8

char

Byte

UINT8

unsigned char

Byte

INT16

short

O Word

UINT16

unsigned short

O Word

INT32

int, long

Palavra composta

UINT32

unsigned int, unsigned long

Palavra composta

INT64

__int64

Quadword

UINT64

unsigned __int64

Quadword

FP32 (precisão única)

float

Palavra composta

FP64 (precisão dupla)

double

Quadword

PONTEIRO

*

Quadword

__m64

estrutura __m64

Quadword

__m128

estrutura __m128

Octaword

As seguintes regras agregadas de alinhamento se aplicam:

  • O alinhamento de uma matriz é o mesmo que o alinhamento de um dos elementos da matriz.

  • O alinhamento de início de uma estrutura ou uma união é o alinhamento máximo de qualquer membro individual.Cada membro na estrutura ou de união deve ser colocado no alinhamento apropriado como definido na tabela anterior, que pode exigir o preenchimento join implícito, dependendo do membro anterior.

  • O tamanho da estrutura deve ser um várias integral do alinhamento, que pode exigir o preenchimento após o último membro.Como estruturas e uniões pode ser agrupados em matrizes, cada elemento da matriz de uma estrutura ou uma união deve iniciar e terminam no alinhamento apropriado determinado anteriormente.

  • É possível alinhar dados de modo que ser maior do que os requisitos de alinhamento como as regras anteriores são mantidas.

  • Um compilador individual pode ajustar a caixa de uma estrutura por motivo de tamanho.Por exemplo /ZP (alinhamento de membro Struct) permite ajustando a caixa estruturas.

Consulte também

Referência

Types and Storage