Agregados e uniões
Outros tipos, sistema autônomo arrays, structs e uniões têm requisitos de alinhamento mais rígidos que garantem consistente união e agregar dados e armazenamento recuperação.Aqui estão as definições de matriz, estrutura e união:
Matriz
Contém um agrupar ordenado de objetos de dados adjacentes.Cada objeto é chamado de um elemento.Todos os elementos em um array ter o mesmo dimensionar e o tipo de dados.Estrutura
Contém um agrupar ordenado de objetos de dados.Diferentemente de elementos de uma matriz, os objetos dentro de uma estrutura de dados podem ter diferentes tipos de dados e tamanhos.Cada objeto em uma estrutura de dados é chamado de um membro.União
Um objeto que contém qualquer um de um conjunto de membros com nomes.Os membros do conjunto nomeado podem ser de qualquer tipo.O armazenamento alocado para uma união é igual ao armazenamento necessário para o membro maior essa união, além de qualquer preenchimento necessários para alinhamento.
A tabela a seguir mostra o alinhamento altamente sugerido para os membros escalar de uniões e estruturas.
Tipo escalar |
Tipo de dados c |
Alinhamento necessário |
INT8 |
char |
Byte |
UINT8 |
unsigned char |
Byte |
INT16 |
short |
Word |
UINT16 |
unsigned short |
Word |
INT32 |
int, longo |
Doubleword |
UINT32 |
int não assinado, unsigned long |
Doubleword |
INT64 |
__int64 |
Quadword |
UINT64 |
unsigned __int64 |
Quadword |
FP32 (precisão simples) |
float |
Doubleword |
FP64 (precisão duplas) |
double |
Quadword |
PONTEIRO |
* |
Quadword |
__m64 |
__m64 struct |
Quadword |
__m128 |
__m128 struct |
Octaword |
As regras de alinhamento agregadas a seguir se aplicam:
O alinhamento de uma matriz é a mesma sistema autônomo o alinhamento de um dos elementos da matriz.
O alinhamento do início de uma estrutura ou uma união é o alinhamento máximo de qualquer membro individual.Cada membro dentro da estrutura ou união deve ser colocado em seu alinhamento adequado, conforme definido na tabela anterior, que pode exigir implícito preenchimento interno, dependendo do membro anterior.
dimensionar de estrutura deve ser um múltiplo inteiro do seu alinhamento, que pode exigir preenchimento após o último membro.Desde que as estruturas e uniões podem ser agrupados em arrays, cada elemento da matriz de uma estrutura ou união deve começam e terminam com o alinhamento adequado previamente determinado.
É possível alinhar sistema autônomo dados de forma a ser maior do que sistema autônomo requisitos de alinhamento, desde que sistema autônomo regras anteriores são mantidas.
Um compilador individual pode ajustar a remessa de uma estrutura por motivos de dimensionar.Por exemplo, /Zp (alinhamento de membro da struct) permite o ajuste de remessa de estruturas.