Entre para seguir isso  
Guest myks

Como Retornar Um Vetor De Uma Funçao?

Recommended Posts

Guest myks   
Guest myks

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
iSoron    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

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eddie_666    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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

Entre para seguir isso