Diferença entre ponteiro e referência | Ponteiro vs Referência

Anonim

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 -