Objetivos
Struct e Ponteiros
A declaração e atribuição de ponteiro para o tipo de da struct segue o padrão
já exemplificado anteriormente para outros tipos de dados:
Sintaxe
struct nome_struct *nome_ponteiro;
Onde
nome_struct: nome da strcut criada.
nome_ponteiro: nome da variável ponteiro para struct.
A maior diferença está na forma de acessar os membros que pertencem a struct. A linguagem C,
fornece o operador (->) para trabalhar com ponteiros de structs para acessar seus membros:
Sintaxe
nome_ponteiro->nome_membro;
Exemplo 1
#include <stdio.h>
struct teste
{
int valor;
char caracter;
};
int main()
{
struct teste variavel;
struct teste *pnt;
//atribuição de valores
variavel.valor = 10;
variavel.caracter = 'A';
//antes:
printf("%d %c\n",variavel.valor,variavel.caracter);
pnt = &variavel;
//alteração
pnt->valor = 11;
pnt->caracter = 'B';
//depois:
printf("%d %c \n",variavel.valor,variavel.caracter);
return 0;
}
Saída
10 A
11 B
Ponteiro para struct como Parâmetro
O uso de struct como parâmetro de um função e a passagem como argumento é semelhante aos
outros exemplos de outros tipos de dados já discutidos.
Sintaxe
tipo_retorno nome_funcao(struct nome_struct *nome_parametro){ //corpo }
Onde
nome_funcao: nome da função que irá aceitar argumentos/parâmetros.
nome_struct: nome da struct criada.
nome_ponteiro: nome da variável ponteiro para struct.
Exemplo 2
#include <stdio.h>
struct teste
{
int valor;
char caracter;
};
void funcao(struct teste *parametro)
{
parametro->valor++;
parametro->caracter = 'Z';
}
int main()
{
struct teste variavel;
variavel.valor = 10;
variavel.caracter = 'A';
printf("%d %c\n",variavel.valor,variavel.caracter);
funcao(&variavel);
printf("%d %c \n",variavel.valor,variavel.caracter);
return 0;
}
Saída
10 A
11 Z
Retornando ponteiro para struct
Para retornarmos um ponteiro de struct de uma função, de forma semelhante ao que já foi
visto sobre o retorno de dados em funções, declaramos o retorno de uma função como o tipo de dado
ponteiro para struct.
Sintaxe
struct nome_struct *nome_funcao(parametros)
{
//corpo
return nome_ponteiro;
}
Onde
nome_funcao: nome da função que irá aceitar argumentos/parâmetros.
nome_struct: nome da struct criada.
nome_ponteiro: nome da variável ponteiro para struct.
parametros: lista de parâmetros separados por (,).
Exemplo 3
#include <stdio.h>
struct teste
{
int valor;
char caracter;
};
struct teste *funcao(void)
{
struct teste variavel;
variavel.valor = 10;
variavel.caracter = 'A';
struct teste *ponteiro = &variavel;
return ponteiro;
}
int main()
{
struct teste *ponteiro = NULL;
ponteiro = funcao();
printf("%d %c \n",ponteiro->valor,ponteiro->caracter);
return 0;
}
Saída
10 A
Histórico de atualizações
- 11/03/2025 - revisão 4 - Ajuste em sintaxes;
- 07/10/2024 - revisão 3 - Correção: link 'Anterior', ajustes pontuais
- 30/08/2024 - revisão 2 - Correção em links de objetivos
- 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais
- 19/05/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.