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

Utilidade De Ponteiros


Andersonjb

Pergunta

Pessoal, eu tenho essa pergunta encucada na cabeça a algum tempo e gostaria de saber: qual e a verdadeira utilidade de ponteiros? porque eu teria que saber o endereço na memoria de uma variavel? alguém poderia me explicar?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Opa!

A alocação dinâmica de memória é uma importante aplicação.

Outra muito importante é a passagem de parâmetros para funções por referência. Considere, por exemplo, que você tem uma função que recebe um parâmetro inteiro:

#include <iostream>

using namespace std;

void f( int x )
{
    x = 5;
}

int main()
{
    int p = 2;

    f( p );

    cout << p << endl;

    return 0;
}
Isso imprimirá o número 2 na tela, ou seja, a função "f()" não afetou em nada o valor de p. Isso acontece porque o que foi passado para a função foi uma cópia do valor de p (usou-se a passagem de parâmetros por valor). Mas, se mudássemos a função para, ao invés de receber um inteiro, receber um ponteiro para um inteiro, ela recebria, na verdade, o endereço na memória da variável passada, podendo, assim, modificá-la:
#include <iostream>

using namespace std;

void f( int *x )
{
    *x = 5;
}

int main()
{
    int p = 2;

    f( &p );

    cout << p << endl;

    return 0;
}
Nesse código, foi passado o endereço de p (usando o operador "&"), e a função "f()" pode modificar o valor de p. A principal vantagem desse tipo de passagem é que, quando se passa objetos muito grandes, tais como estruturas ou classes, se passarmos através da passagem por valor, a cópia de um valor muito grande teria que ser realizada. Desta forma, é muito melhor passar esses dados por referência. E se não quiser que os dados passados sejam modificados, passe-os como constantes:
void f( const int *x )
{
    *x = 5;
}

Assim conseguimos mesclar a eficiência da chamada por referência com a segurança da passagem por valor.

Em listas encadeadas, por exemplo, você declara um ponteiro para o próximo nó da lista. Se não se usasse ponteiros nesse caso, teríamos que sobrecarregar o operador "=", e teríamos uma queda no desempenho quando fôssemos manipular a lista.

Deu pra ter uma idéia das aplicações dos ponteiros, né?

Até mais!

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