Ir ao conteúdo
  • Cadastre-se

Como passar um vetor de ponteiros para uma função?


FabioMonteiro

Posts recomendados

Olá pessoal, estou fazendo um ex da faculdade, que se resume em uma struct de livros, para adicionar código, titulo autor etc. Meu problema é o seguinte: eu criei um vetor de ponteiros, do tipo struct livros, e a medida que o usuario vai cadastrando o programa vai alocando memoria e atribuindo ao vetor. Só que eu quero fazer algumas funções pra simplificar algumas funcionalidades do programa mas eu nao sei como passar esse vetor de ponteiros para a função, ja tentei de varias maneiras mas nao deu certo. Uma solução que eu acho que daria certo e que não tentei ainda, seria declarar esse vetor como global, mas eu não quero fazer isso. Espero que possam me ajudar. Obrigado!

Link para o comentário
Compartilhar em outros sites

Você pode criar uma função do tipo LIVRO ponteiro de ponteiro, ou passar ponteiro para ponteiro como argumento.

Por exemplo, uma função do tipo LIVRO, ponteiro de ponteiro.


#include <stdio.h>
#include <stdlib.h>

typedef struct livro{
char titulo[20], autor[20];
}LIVRO;

LIVRO **registra(int qtd){
int i;
LIVRO **r;
r = (LIVRO**)malloc(sizeof(LIVRO*) * qtd);
for(i = 0; i < qtd; i++){
r[i] = (LIVRO*)malloc(sizeof(LIVRO));
printf("Titulo %d: ", i + 1);
scanf("%s", r[i]->titulo);
printf("Autor %d: ", i + 1);
scanf("%s", r[i]->autor);
}
return r;
}

int main(void){
int i;
LIVRO **r= registra(5);
for(i = 0; i < 5; i++){
printf("%s, %s\n", r[i]->titulo, r[i]->autor);
}
return 0;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...