Ir para conteúdo
Fórum Script Brasil
  • 0

Como Retornar Um Vetor De Uma Funçao?


Guest myks

Pergunta

Pessoal,

Eu queria saber como retorna um vetor de uma função e como atribui este valor a outro vetor??? Como exemplo, como consertar o codigo abaixo?

abs.


int funcao(int n);

int main()
{

int y;
int resposta[10];

y = 5;
resposta = funcao(5);

return 0;
}


int funcao(int n) {
    int x;
    int vetor[10];
     
        for(x=1; x<=n; x++) {
           vetor[x] = vetor[x] + x;
        }    
    return vetor;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Antes de mais nada, você deve entender que um vetor é, na verdade, um ponteiro. Então, fica fácil retorná-lo. Mas aí aparecem dois problemas:

Primeiro, as variáveis declaradas dentro de uma função só existem no escopo da função. Assim que a função termina, tudo o que existe dentro dela vai para o espaço, inclusive o valor que você acabou de retornar. Para evitar isso, use o malloc. Nos tópicos fixos há alguns textos sobre alocação dinâmica e ponteiros, se você tiver dúvidas.

Além desse problema, há outro: por não passarem de ponteiros, os vetores não guardam qualquer informação sobre a quantidade de elementos armazenados. Então é bem fácil extrapolar o vetor, e conseguir um lindo Segmentation Fault. Para resolver isso, você vai precisar criar uma estrutura, e retorná-la.

Resumindo, dá um pouco de trabalho. Eu utilizaria outro método para fazer isso, como, por exemplo, passar o vetor a ser preenchido como argumento da função. Que tal?

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

normalmente se passa o ponteiro (endereco) para o vetor como parametro da funcao e o preenche dentro dela. creio que essa foi a ultima sugestao do isoron, agora que fui ler, bom, mas como já está digitado mesmo, vou postar smile.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...