Diferença entre ponteiro e referência | Ponteiro vs Referência
Diferença-chave - Ponteiro versus Referência
Antes de discutir a diferença entre o ponteiro e a referência, primeiro olhe o significado desses dois termos brevemente. Em um programa, os dados ocupam memória. A localização exata da memória em que os dados foram colocados em um tempo de execução deve ser conhecida para acessá-los. Variáveis de ponte e variáveis de referência são usadas para acessar esses dados e manipular os endereços de memória em que estão. Ou seja, ambos os ponteiros e referências podem ser usados para se referir indiretamente a objetos. Eles essencialmente mantêm os endereços de memória como seus valores. A diferença de chave entre um ponteiro e uma referência é que um ponteiro é uma variável que armazena o endereço da localização de memória de outra variável enquanto uma referência é uma variável que se refere para outra variável. Os dois mecanismos, o ponteiro e referência, têm sintaxe e uso diferentes .
O que é um ponteiro?
Um ponteiro é um objeto de linguagem de programação que armazena o endereço de memória de um valor na memória informática.
Na sintaxe C ++;
int i = 5;
int * ptr = & i;
A primeira linha define uma variável inicializada com um valor de 5. A segunda linha define um ponteiro para o endereço de memória da variável. Aqui, o 'ptr' é declarado como um objeto de tipo 'ponteiro para int' cujo valor inicial é o endereço do objeto i. Essencialmente ptr variável aponta para i armazenando seu endereço de memória.
Obter o valor armazenado em uma localização de memória é chamado dereferencing . O operador * é usado para desreferenciar o ponteiro. Depois que as declarações são feitas, a expressão indireta * ptr dereferences ptr para se referir a i.
Para alterar o valor de i, a seguinte atribuição pode ser usada;
* ptr = 20;
Os ponteiros podem ser reatribuídos para se referir a diferentes objetos também.
A ponteiro nulo é um tipo especial de ponteiro. Um ponteiro nulo é normalmente indicado por 0 ou nulo e aponta para nada. É uma boa prática usar um ponteiro nulo no caso de não ter um endereço exato a ser atribuído ao ponteiro. Esta tarefa pode ser usada em operações e condições lógicas.
Os ponteiros podem ser usados para armazenar e gerenciar os endereços da memória alocada dinamicamente . A implementação eo controle de estruturas de dados como pilhas, filas e listas podem ser eficientes com o uso de ponteiros. Por exemplo, uma fila pode ter dois ponteiros; ponteiro principal e ponteiro.Os ponteiros também podem ser usados para passar variáveis pelo endereço, o que permitiria que o valor fosse alterado. A manipulação direta de dispositivos de memória ou mapeados em memória também pode ser gerenciada usando ponteiros.
Os ponteiros permitem o acesso protegido e desprotegido à memória endereçada. Portanto, as precauções necessárias devem ser tomadas para verificar se o conteúdo de um ponteiro é válido. Caso contrário, a desenergização de um ponteiro com um endereço de memória inválido pode causar o bloqueio do programa.
Os ponteiros são suportados em idiomas como C, C ++, Pascal e muitos idiomas de montagem.
Ponteiro a apontando para o endereço de memória associado com a variável b.
O que é uma Referência?
Uma referência é simplesmente um identificador alternativo para um valor armazenado na memória . Permite que um programa acesse indiretamente um dado particular.
Na sintaxe C ++;
int i = 5;
int & ref = i;
A primeira linha define uma variável inicializada com um valor de 5. A segunda linha declara 'ref' como um objeto de tipo 'referência a int' que se refere a i. Uma referência é diferente dos dados, dado que uma referência é implementada como o endereço físico do dado particular que está armazenado na memória.
Uma vez definido, uma referência não pode ser reatribuída a um novo valor. Uma referência sempre se refere ao objeto com o qual ele é inicializado. Na seguinte atribuição, ref ainda se refere a i, mas o valor é agora 20.
ref = 20;
De acordo com o exemplo acima, as referências de referência não requerem nenhum operador.
As referências podem ser usadas quando uma variável sempre se refere a um objeto. Isso ocorre porque, ao contrário dos ponteiros, as referências não podem ser nulas e sempre devem ser atribuídas na inicialização. Uma vez que as referências devem sempre referir-se a algum objeto, tornar essa variável uma referência garante que o programa funcione de forma eficiente e correta. Dado que, não há referências nulas, a validade de uma variável de referência não precisa ser testada.
As variáveis de referência podem ser usadas para passar eficientemente dados grandes como argumentos para procedimentos . As referências também são usadas para compartilhar dados grandes entre diferentes áreas de código, pois cada código mantém uma referência aos dados.
Linguagens de programação como C ++, Java, Python, Perl, PHP, Ruby, etc., referências de suporte.
Qual a diferença entre o ponteiro e a referência?
Definição de ponteiro e referência
Ponteiro: Um ponteiro é o endereço de memória de um objeto armazenado na memória informática.
Referência: Uma referência é um identificador alternativo ou um alias para um objeto.
Características do ponteiro e Referência
Declaração
Ponteiro: Um ponteiro é declarado com o * operador.
Referência: Uma referência é declarada com o operador &.
Dereferencing
Ponteiro: Uma variável de ponteiro requer que o operador * seja desreferenciado.
Referência: Uma variável de referência exige que nenhum operador seja desreferenciado.
Inicializando
Ponteiro: Os ponteiros podem ser inicializados como nulos.Essas variáveis são chamadas de ponteiros nulos.
Referência: As referências não podem ser inicializadas como nulas. Não existe uma referência nula. Uma referência deve sempre se referir a um objeto.
Reatribuições
Ponteiro: Uma variável de ponteiro pode ser reatribuída para se referir a objetos diferentes.
Referência: Uma variável de referência não pode ser reatribuída. Sempre se refere ao objeto com o qual foi inicializado.
Uso
Ponteiro: As variáveis do ponteiro devem ser usadas quando a possibilidade de se referir a nada existe ou quando é necessário se referir a coisas diferentes em momentos diferentes.
Referência: As variáveis de referência devem ser usadas quando sempre haverá um objeto a se referir e quando não for necessário usar essa variável de referência para se referir a outra coisa além desse objeto.
Aplicação de uso
Ponteiro: As variáveis de ponteiro podem ser usadas para implementar algoritmos e estruturas de dados.
Referência: As variáveis de referência podem ser usadas nos parâmetros da função e os tipos de retorno definem interfaces úteis.
Idiomas usados:
Ponteiro: Linguagens de programação como C, C ++, Pascal e muitos ponteiros de suporte de idiomas de montagem.
Referência: Linguagens de programação como C ++, Java, Python, Perl, PHP, Ruby, etc., referências de suporte.
Cortesia da imagem: "Ponteiros" por Este arquivo foi feito pelo usuário: SvenTranslation. Trabalho próprio. Essa imagem vetorial foi criada com o Inkscape. (CC BY-SA 3. 0) via Commons -