• 0
Sign in to follow this  
Guest myks

Como Retornar Um Vetor De Uma Funçao?

Question

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

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this