Até este momento da disciplina, trabalhamos principalmente com variáveis e vetores. Essas estruturas são extremamente úteis, mas possuem uma característica importante: cada variável ou posição de um vetor armazena apenas um tipo de dado.

Por exemplo:

int idade;
double salario;
char nome[100];

Da mesma forma, um vetor é composto por elementos de um único tipo:

int notas[30];
double temperaturas[365];
char palavra[50];

Esse modelo funciona muito bem quando precisamos armazenar informações homogêneas, ou seja, dados que possuem o mesmo tipo.

Entretanto, muitos problemas reais exigem o armazenamento de informações compostas por diferentes tipos de dados.

Motivação

Imagine que precisamos desenvolver um sistema para armazenar informações de alunos. Cada aluno possui:

Uma abordagem simples seria utilizar vários vetores independentes:

char nomes[100][100];
int matriculas[100];
int idades[100];
float medias[100];

Nesse caso, todas as informações de um mesmo aluno precisam estar na mesma posição dos vetores:

Índice Nome Matrícula Idade Média
0 Ana 2025001 18 8.5
1 Carlos 2025002 19 7.8

Embora funcione, essa solução apresenta alguns problemas: