Você está aqui: C ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Como escrever um função que retorna uma estrutura (struct) usando a linguagem CQuantidade de visualizações: 16379 vezes |
|
Muitas vezes precisamos escrever funções que retornam estruturas, ou melhor, que alocam e retornam ponteiros para estruturas. Esta não é, definitivamente, uma tarefa para iniciantes em C. Contudo, esta dica lhe fornecerá um código completo indicando-lhe uma das formas mais simples de conseguir tal proeza. Antes de executar o código, porém, dê uma olhada atenta na função obter_livro(). Veja que esta função recebe o título, o código e o número de páginas de um livro. Em seguida a função aloca memória para uma estrutura, preenche seus membros e retorna um ponteiro para tal estrutura. Eis a listagem completa: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// define a estrutura Livro
struct Livro{
char *titulo;
int codigo;
int paginas;
};
// função que aloca e retorna um ponteiro para uma
// estrutura Livro
struct Livro* obter_livro(char *titulo, int codigo, int paginas){
// aloca memória para uma estrutura Livro
struct Livro *temp = (struct Livro*)malloc(sizeof(struct Livro));
// preeche os membros da estrutura
temp->titulo = titulo;
temp->codigo = codigo;
temp->paginas = paginas;
return temp;
}
int main(int argc, char *argv[]){
// obtém uma instância da estrutura Livro
struct Livro *a = obter_livro("Programando em Java", 345, 120);
// verifica se a estrutura foi retornada com
// sucesso
if(a != NULL){
printf("Titulo: %s\nCodigo: %d\nPaginas: %d\n",
a->titulo, a->codigo, a->paginas);
}
// obtém uma segunda instância da estrutura Livro
struct Livro *b = obter_livro("JavaScript - Guia", 540, 800);
// verifica se a estrutura foi retornada com
// sucesso
if(b != NULL){
printf("Titulo: %s\nCodigo: %d\nPaginas: %d\n",
b->titulo, b->codigo, b->paginas);
}
puts("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código nós teremos o seguinte resultado: Titulo: Programando em Java Codigo: 345 Paginas: 120 Titulo: JavaScript - Guia Codigo: 540 Paginas: 800 Pressione qualquer tecla para continuar... |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






