Ponteiros para ponteiros

Ponteiros para ponteiros

Na linguagem de programação C ++, um ponteiro parece ser uma variável que pode salvar ou manter o endereço de outra variável e ser utilizada para se referir a qualquer outro ponteiro extra. Os dois usos diferentes de ponteiros são salvar memória e acelerar a velocidade do processador.

Tipos de ponteiros em c++

Vários tipos de ponteiros na linguagem de programação C ++ são compartilhados e explicados abaixo:

Ponteiro nulo

Um ponteiro nulo pode ser criado ou executado se fornecermos um valor "nulo" ao declarar o ponteiro. Este método é considerado útil se o ponteiro tiver sido atribuído a nenhum valor. Dentro de um ponteiro nulo, 0 está sempre presente como um valor de ponteiro. Vejamos uma ilustração de usar o ponteiro nulo no código.

#incluir
usando namespace std;
int main ()

int *i = null;
cout << "The value of variable i: " << i;
retornar 0;

No início do código, o arquivo de cabeçalho seria integrado. O espaço de nome padrão "std" seria então usado. Então, o método principal () seria executado. Aqui, o ponteiro da variável "eu" seria declarado. O valor deste ponteiro seria atribuído como "nulo". Em seguida, o comando "cout" seria utilizado para mostrar o resultado. Para encerrar o programa, empregaríamos uma declaração de retorno 0.

Ponteiro vazio

Não há tipo de dados padrão para o ponteiro vazio. Esse tipo de ponteiro é geralmente criado usando o termo "vazio". Um dos principais usos deste ponteiro é armazenar ou manter o endereço de alguma outra variável.

#incluir
usando namespace std;
int main ()

vazio *z = null;
cout << "The size of z: " << sizeof(z);
retornar 0;

O arquivo de cabeçalho seria integrado no início do programa. Além disso, utilizaremos o espaço de nome padrão como "std". O método principal () está sendo chamado. O ponteiro variável "Z" será declarado na próxima etapa. Receberíamos o valor "nulo" para este ponteiro. O comando "cout" exibiria o tamanho do ponteiro necessário. A função sizeof () seria utilizada para determinar o tamanho do ponteiro. Usando a declaração de retorno 0, podemos encerrar o programa.

Ponteiro para ponteiro

Já discutimos que em C ++, um ponteiro é utilizado para manter o endereço de uma variável. Um ponteiro acelera o acesso de uma variável. Para manter o endereço de algum outro ponteiro, um ponteiro também pode ser definido em c++. Em um ponteiro para a função do ponteiro, o endereço variável é armazenado no primeiro ponteiro. Por outro lado, o primeiro endereço do ponteiro geralmente é armazenado no segundo ou em algum outro ponteiro.

Sintaxe

Exemplo 1

Agora, veremos o uso de um ponteiro para apontar em c++.

#incluir
usando namespace std;
int main ()

int x = 16;
int *m;
int ** mm;
m = & x;
mm = & m;
cout << "The address of the variable x: " << m <cout << "The address of the variable m: " << mm <cout << "The value stored in the variable m: " << *m <cout << "The value stored in the variable mm: " << **mm <

O programa será iniciado integrando o arquivo de cabeçalho . Esta biblioteca será aplicada para executar diferentes funcionalidades de entrada e saída. Primeiro, inicializaríamos a variável "x" e atribuímos o valor. O ponteiro que salva o endereço da variável "x" será declarado na próxima etapa. Nós então criamos outro ponteiro. Aqui, indicaríamos o primeiro ponteiro para o endereço do "x". O valor do primeiro ponteiro, "M", estaria onde o ponteiro duplo apontaria. Chamaríamos a declaração "cout" quatro vezes. Os dois primeiros comandos "cout" imprimem o endereço da variável e ponteiro especificado.

Exemplo # 2

Vejamos uma ilustração de um ponteiro que faz referência a outro ponteiro por endereço.

#incluir
usando namespace std;
int main ()

int v [12] = 102, 212, 870, 169, 581, 721;
int *d [] = v, v+1, v+2, v+3, v+4, v+5;
int ** dd = d;
dd ++;
cout << dd-d,*dd - v,**dd;
*dd ++;
cout << dd-d,*dd - v,**dd;
++*dd;
cout << dd-d,*dd - v,**dd;
++** dd;
cout << dd-d,*dd - v,**dd;

A biblioteca seria incorporada no início do código. Este módulo contém os métodos de entrada e saída. Agora, começaríamos a codificação dentro do corpo da função principal (). Aqui, criamos pela primeira vez a matriz. Esta matriz contém seis valores. Esses valores são armazenados na variável "V".

Então, declaramos a matriz para o ponteiro chamado "D". Na próxima etapa, declararíamos um ponteiro duplo. Então poderíamos incrementar o valor do ponteiro. O ponteiro duplo é empregado com aritmética do ponteiro. É construído como uma matriz de 6 elementos com uma variedade de ponteiros (d) é definida. Os ponteiros referentes a cada membro da matriz compõem os elementos de "D". Como o endereço base da matriz está contido no nome da matriz, ela funcionará como um ponteiro e seu valor pode ser acessado utilizando *(v), *(v+1), *(v+2), *(v +3), *(v+4), *(v+5). No final, aplicaríamos o comando "cout" para exibir as saídas.

Vantagens de usar os ponteiros para ponteiros em c++

  • O acesso a locais de memória é facilitado com os ponteiros.
  • Os componentes de uma estrutura de matriz podem ser acessados ​​com eficiência via ponteiros.
  • Tanto a desalocação quanto a alocação de memória dinâmica requerem indicadores.
  • Estruturas de dados complexas, como listas vinculadas, gráficos, árvores, etc., são criados usando ponteiros.

Desvantagens de usar os ponteiros para ponteiros em C++

  • Pode ser um desafio compreender ponteiros.
  • Ponteiros podem causar vários problemas, incluindo falhas de segmentação e acesso à memória não autorizado.
  • A corrupção da memória pode resultar de dar a um ponteiro um valor impreciso.
  • Vazamentos de memória também podem ocorrer através de ponteiros.
  • Os ponteiros inicializarão mais lentamente do que as variáveis.
  • Como os ponteiros de manipulação podem ser extremamente desafiadores para os programadores, eles são obrigados a fazê -lo com sabedoria.

Conclusão

Neste artigo, discutimos os ponteiros usados ​​na linguagem de programação C ++, suas vantagens, desvantagens, sintaxe e aplicações. Além disso, discutimos o ponteiro para o ponteiro na linguagem C ++. Além disso, executamos programas diferentes para demonstrar como e quando usar ponteiros para ponteiros em c++. Também vemos como usar o ponteiro vazio e nulo em C ++ implementando os códigos.