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

A Utilidade de Apontadores e Referências? (C++)


Thommason

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

http://www.inf.ufpr.br/nicolui/grad/ci067/...7Ponteiros.html

http://www.inf.ufpr.br/nicolui/grad/ci067/...c_coes_Qua.html

Quando mexer com alocação dinâmica, verá que ponteiro é mais que fundamental.

Imagine a velha funão troca(x, y), que atribui a x o valor de y e vice-versa. Como resolver isso sem usar ponteiro? Você poderia retornar um vetor com as duas variáveis, mas seria uma bela gambiarra. Por isso existe passagem por referência

Link para o comentário
Compartilhar em outros sites

  • 0

Isso já foi discutido aqui no fórum

Olhe esse link: http://scriptbrasil.com.br/forum/index.php?showtopic=132919

Você poderia retornar um vetor com as duas variáveis, mas seria uma bela gambiarra.

Na verdade ao passar vetores estamos fazendo uma passagem por referência

Link para o comentário
Compartilhar em outros sites

  • 0
Na verdade ao passar vetores estamos fazendo uma passagem por referência

O que eu quis dizer foi isto:

Em vez de fazer assim:

void troca(int *x, int*y)
{
    int aux = *x;
    *x = *y;
    *y = aux;
}
fazer assim:
int * troca(int x, int y()
{
    int retorno[2];

    /* 0 representa x */
    retorno[0] = y;

    /* 1 representa y */
    retorno[1] = x;
   
    return retorno;
}

Aí faz as devidas atribuições no programa principal. Isso seria uma bela gambiarra. ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Testei aqui e não consegui fazer funcionar esse seu segundo código...

É porque você retornou o endereço de uma variável local (o compilador até emite um warning)

Talvez dê pra fazer isso com uma variável static char

Aí utilizaria itoa() pra converter o número pra um char, separava os dois números por algum caractere, retornava essa variável pra outra função, separava os dois números e salvava de novo

Uma grandeeee gambiarra mesmo !

Mas isso foge do assunto...

Resumindo: A melhor forma de se fazer isso é com ponteiros !

Isso seria uma bela gambiarra.

Onde já se viu gambiarra bonita ??

hauahuahua

Link para o comentário
Compartilhar em outros sites

  • 0
Testei aqui e não consegui fazer funcionar esse seu segundo código...

É porque você retornou o endereço de uma variável local (o compilador até emite um warning)

o espaco do array deveria ser alocado com o malloc ou o new, porque senao o endereco é liberado depois do return e você não vai conseguir pegar os valores.

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...