[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Função que retorna dois valores inteiros



Olá,

leotrabuco@uol.com.br writes:
> Como seria a sintaxe de uma função que retorna dois valores inteiros?

Não é possível criar uma função que retorne mais de um valor. Se você
quer que dois valores inteiros sejam calculados por uma função, você
pode usar ponteiros para fazer isso, como no exemplo:

#include <stdio.h>

int funcao(int *p)
{
  *p = 17;

  return 34;
}

int main()
{
  int *ponteiro;
  int a;
  
  a = funcao(ponteiro);

  printf("a = %d, ponteiro = %d\n", a, *ponteiro);

  return 0;

}

A saída do programa acima seria:
a = 34, ponteiro = 17

Um dos valores que você quer retornar seria o 34, que está sendo
retornado pela função; o outro seria o 17, que foi colocado na
posição de memória para a qual o ponteiro aponta. Você poderia
receber quantos ponteiros quisesse como argumentos para a função,
a função colocaria os valores neles e eles estariam disponíveis no
programa principal.

Você também poderia receber um vetor como parâmetro para a função e
guardar os inteiros que quer retornar neste vetor, como os vetores
também funcionam por referência eles estariam disponíveis no programa
principal.

Outra forma seria utilizar variáveis globais onde a função
armazenaria os inteiros. Como as variáveis são globais, elas estariam
disponíveis tanto no programa principal quanto no escopo da função.
Porém, se decidir usar variáveis globais tenha muita cautela, pois
freqüentemente o programa pode tornar-se confuso.

Até mais,

Daniel