Andersonjb Postado Junho 26, 2005 Denunciar Share Postado Junho 26, 2005 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Junho 26, 2005 Denunciar Share Postado Junho 26, 2005 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Junho 27, 2005 Denunciar Share Postado Junho 27, 2005 Sem duvida nehuma ponteiro é otimo principalmente em uso de funções e ainda as notações de ponteiros compilam mais rapidamente tornando o código mais eficiente Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Andersonjb
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
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.