Programação C · 3 min read · Nov 18, 2025
Tutorial de Programação em C no Linux Parte 26 - Estruturas e Funções

Em um de nossos tutoriais anteriores sobre linha de comando, abordamos o conceito de Estruturas. Usando exemplos fáceis de entender, discutimos coisas básicas como o que são estruturas e por que elas são necessárias. Expandindo isso, neste tutorial, discutiremos como estruturas e funções podem ser usadas juntas.
Estruturas e Funções na Linguagem de Programação C
Antes de começarmos, vamos rapidamente relembrar como uma estrutura é declarada. Aqui está um exemplo:
struct emp_details {
int emp_code;
int emp_age;
};Então aqui, a palavra-chave struct - que é obrigatória se você estiver definindo uma estrutura em C - significa o início da declaração. É seguida por uma tag, ou você pode dizer o nome da estrutura. Então, dentro de colchetes, você tem duas variáveis inteiras, que são agrupadas como parte desta estrutura.
Para usar esta estrutura, você primeiro precisa definir sua instância ou objeto. Você pode fazer isso da seguinte maneira:
emp_details obj;E então os membros da estrutura podem ser acessados da seguinte maneira:
obj.emp_code
obj.emp_ageAgora, passando para funções, uma função pode retornar estruturas, bem como aceitar estruturas na forma de argumentos. Aqui está um exemplo:
#include
struct emp_details {
int emp_code;
int emp_age;
};
struct emp_details fill(int code, int age)
{
struct emp_details obj;
obj.emp_code = code;
obj.emp_age = age;
return obj;
}
int main()
{
int x,y;
printf("Enter employee code: ");
scanf("%d", &x);
printf("\n Enter employee age: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj = fill(x,y);
printf("\n The employee code and age you entered are: %d and %d", new_obj.emp_code, new_obj.emp_age);
return 0;
} Então aqui, neste exemplo, temos uma função ‘fill’ que aceita dois inteiros, trata-os como código e idade, preenche uma estrutura com base nessas informações e retorna a estrutura por valor para o chamador da função.
Agora, como mencionei anteriormente em uma declaração acima, estruturas também podem ser passadas como argumentos de função. A seguir está um exemplo, onde a função ‘fill’ aceita uma estrutura ‘emp_details’ como argumento.
#include
struct emp_details {
int emp_code;
int emp_age;
};
void fill(struct emp_details obj)
{
printf("\n The employee code and age you entered are: %d and %d", obj.emp_code, obj.emp_age);
}
int main()
{
int x,y;
printf("Enter employee code: ");
scanf("%d", &x);
printf("\n Enter employee age: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj.emp_code = x;
new_obj.emp_age = y;
fill(new_obj);
return 0;
} E aqui está a saída no meu caso:
Enter employee code: 36
Enter employee age: 29
The employee code and age you entered are: 36 and 29Avançando, como variáveis normais, arrays e mais, também podem haver ponteiros para estruturas. Aqui está um exemplo:
struct emp_details *ptr;Como sempre, ponteiros são úteis caso o tamanho da estrutura seja grande, e você esteja enviando-a como um argumento para uma função. Idealmente, aqui está como você pode acessar variáveis de estrutura através de objetos ponteiro:
(*ptr).emp_code
(*ptr).emp_ageMas para simplificar, C permite que você omita * e . e use ‘->’ em vez disso. A seguir está um exemplo:
ptr->emp_code
ptr->emp_age Aqui está um exemplo que faz uso de ponteiro de estrutura:
#include
struct emp_details {
int emp_code;
int emp_age;
};
void fill(struct emp_details *obj)
{
printf("\n The employee code and age you entered are: %d and %d", obj->emp_code, obj->emp_age);
}
int main()
{
int x,y;
printf("Enter employee code: ");
scanf("%d", &x);
printf("\n Enter employee age: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj.emp_code = x;
new_obj.emp_age = y;
fill(&new_obj);
return 0;
} Embora este seja o mesmo exemplo que usamos anteriormente, as mudanças - já que estamos usando um ponteiro de estrutura agora - estão destacadas em negrito.
Conclusão
Neste tutorial, expandimos nosso entendimento de estruturas discutindo como funções e estruturas podem ser usadas juntas. Você é incentivado a experimentar os exemplos que usamos aqui em seu sistema local. 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.