Ir para conteúdo

POWERED BY:

Arquivado

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

Lary B

[Resolvido] Função retornar dois vetores.

Recommended Posts

Oi pessoal, eu gostaria de saber como eu faço pra uma função retornar dois vetores em C? Eu já procurei, mas não entendi muito bem, se alguém puder me explicar agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só com ponteiros. O return só lhe permite retornar uma variável, mas se houver ponteiros nos parâmetros, você pode passar variáveis globais e depois acessá-las, sem return:

 

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

int x = 0, y = 0;

void mudar(int *x, int *y) {
 *x = 10;
 *y = 20;
}

int main() {
 mudar(&x, &y);
 printf("%d\t", x);
 printf("%d", y);
 return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como dito acima, em C só é possível passar valores como argumentos, e retornar um único valor de uma função. Como ponteiros podem ser usados como "cursores" para vetores (sequências contíguas, em memória, de elementos de mesmo tipo), a convenção é de se passar como argumento, ou retornar, um ponteiro para o primeiro elemento de um vetor. Agora imagine que se tenha um ponteiro para um ponteiro para int. Este ponteiro para ponteiro, que podemos chamar de p, seria declarado assim:

 

int **p;

// aqui, *p é ponteiro para int, **p é int

 

Ao de-referenciar p uma vez, obtemos um ponteiro para int (que, como dito acima, pode ser usado para acessar os elementos de um vetor cujo primeiro elemento está no endereço contido neste ponteiro). Portanto, podemos percorrer, com p, um vetor de ponteiros para int. Um vetor deste tipo com 2 elementos nos permite acessar dois vetores de int.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada galera, eu consegui fazer o q eu queria, até mais.

 

Obrigada galera, eu consegui fazer o q eu queria, até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.