⚡ Cap 16: Tipos Compostos & Alinhamento de Memória
Especialização em Engenharia de Sistemas com Linguagem C (C17/C23)
🗺️ Slide 1: Estruturas Heterogêneas (struct)
graph TD
A["struct SensorIndustrial"] --> B["id (uint32_t) - 4B"]
A --> C["nome (char[32]) - 32B"]
A --> D["tensao (double) - 8B"]
style A fill:#0369a1,stroke:#38bdf8,color:#ffffff
- Ponto (
.): Acesso em instâncias locais. - Seta (
->): Acesso em ponteiros (ptr->campo).
📐 Slide 2: Struct Padding e Alinhamento da CPU
struct Desordenada { char a; double b; char c; }; -> sizeof = 24 Bytes (14B Padding!)
struct Otimizada { double b; char a; char c; }; -> sizeof = 16 Bytes (6B Padding!)
- Boas Práticas: Ordene membros por tamanho decrescente para economizar memória.
🧬 Slide 3: Struct vs Union
| Característica | struct |
union |
|---|---|---|
| Memória | Cada campo tem seu próprio endereço. | Todos os campos compartilham o Byte 0. |
| Tamanho | Soma dos campos + Padding. | Tamanho do maior membro. |
| Uso | Agrupamento de dados. | Conversão de registradores / Type Punning. |
🏷️ Slide 4: Enumerações e Bit-Fields
typedef struct {
unsigned int ativo : 1; // 1 bit
unsigned int nivel : 3; // 3 bits (0 a 7)
} Flags;
- Enums: Eliminam números mágicos e documentam o código.
- Bit-Fields: Empacotamento a nível de bits para hardware e protocolos de rede.
📋 Resumo da Aula & Próximos Passos
- Revise os códigos de exemplo deste capítulo.
- Teste seus conhecimentos no Quiz Formativo.
- Pratique os exercícios em 4 níveis de complexidade.
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim