Programação C · 3 min read · Nov 24, 2025
Tutorial de Programação em C no Linux parte 27 - Array de estruturas

Neste tutorial contínuo de programação em C, temos discutido ultimamente sobre estruturas. Já cobrimos os conceitos básicos de estruturas, como as estruturas podem ser usadas com funções, bem como o conceito de ponteiros para estruturas.
Agora, expandindo ainda mais o conceito de estruturas, discutiremos como criar um array de estruturas usando exemplos fáceis de entender.
Array de estruturas na linguagem de programação C
Então vamos começar. Aqui está uma estrutura simples chamada ‘student_details’ que, como você pode ver, pode ser usada para armazenar o número de matrícula e as notas dos alunos:
struct student_details{
int roll_no;
int marks;
};Agora, suponha que haja 5 alunos no total, e a exigência é aceitar a entrada do usuário sobre esses detalhes dos alunos. Então, uma maneira de escrever o código para isso é:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1;
struct student_details obj2;
struct student_details obj3;
struct student_details obj4;
struct student_details obj5;
...
...
...
Ou talvez algo assim:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1, obj2, obj3, obj4, obj5;
...
...
... Agora, não há problema se você seguir as abordagens mencionadas acima. A única preocupação que surge é se essas abordagens são escaláveis. Quero dizer, e se em vez de 5, você precisar criar, digamos, 50 objetos ou instâncias. Nesse caso, seguir essas abordagens definitivamente tornará a escrita e a manutenção do código muito mais complexas.
Então, existe uma solução? Bem, sim. Uma maneira melhor é criar um array da estrutura ‘student_details’. Aqui está como:
struct student_details obj[5];A seguir está um programa completo que utiliza esse array de estruturas:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj[5];
int i;
for(i=0;i<5;i++)
{
printf("\n Digite o número de matrícula: ");
scanf("%d", &(obj[i].roll_no));
printf("\n Digite as notas (de 100): ");
scanf("%d", &(obj[i].marks));
}
printf("\n Aqui estão os dados que você digitou::");
for(i=0;i<5;i++)
{
printf("\n Número de matrícula: %d", (obj[i].roll_no));
printf("-- Notas: %d", (obj[i].marks));
}
return 0;
} Então aqui, usamos a estrutura ‘student_details’ que discutimos anteriormente e criamos um array de 5 objetos de seu tipo. Em seguida, o programa pede ao usuário para inserir o número de matrícula e as notas dos alunos um por um. As informações correspondentes a cada aluno são armazenadas em cada instância do array de estruturas. E finalmente, as informações armazenadas são impressas de volta como saída para o usuário.
Aqui está a saída no meu caso:
Digite o número de matrícula: 1
Digite as notas (de 100): 67
Digite o número de matrícula: 2
Digite as notas (de 100): 73
Digite o número de matrícula: 3
Digite as notas (de 100): 56
Digite o número de matrícula: 4
Digite as notas (de 100): 52
Digite o número de matrícula: 5
Digite as notas (de 100): 85
Aqui estão os dados que você digitou::
Número de matrícula: 1-- Notas: 67
Número de matrícula: 2-- Notas: 73
Número de matrícula: 3-- Notas: 56
Número de matrícula: 4-- Notas: 52
Número de matrícula: 5-- Notas: 85Usando essa abordagem, você pode escalar facilmente seu programa. Isso significa que, mesmo que haja 50 alunos cujas informações precisam ser armazenadas e impressas, você só precisa aumentar o tamanho do array para 50 e fazer muito poucas alterações relacionadas. O restante do código permanece o mesmo. Portanto, em resumo, você pode lidar com a escalabilidade facilmente ao usar arrays em comparação com as abordagens que discutimos no início do tutorial.
Conclusão
Neste tutorial, cobrimos o conceito básico de array de estruturas. Usando exemplos fáceis de entender, discutimos por que um array de estruturas é importante, quando usá-lo e como usá-lo. Você é aconselhado a experimentar os exemplos deste tutorial em sua máquina. E em caso de qualquer dúvida ou consulta, deixe um comentário abaixo.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.