DoublePointer1 C++ puntero a puntero (puntero doble)

C++ puntero a puntero (puntero doble)

En C++ un puntero es una variable utilizada para almacenar la dirección de memoria de otras variables. Es una variable que hace referencia a un tipo de dato (como int o string) del mismo tipo y se crea con el * operador.

Sintaxis de un puntero en C++:

data_type_of_pointer *name_of_variable = & normal_variable;

¿Qué es puntero a puntero o doble puntero en C++?

Ahora ya sabemos que un puntero almacena la dirección de memoria de otras variables. Entonces, cuando definimos un puntero a un puntero, el primer puntero se usa para almacenar la dirección de las variables y el segundo puntero almacena la dirección del primer puntero. Por esta razón, esto se conoce como un Puntero doble o Puntero a puntero.

El siguiente diagrama explica el concepto de punteros dobles :

Puntero doble

El diagrama de arriba muestra la representación de memoria de un Puntero a Puntero o un Puntero Doble, podemos entender fácilmente que la dirección del variable (es decir, dirección 1) se almacena en ella puntero 1 y la dirección de Puntero 1 (es decir, dirección 2) se almacena en ella puntero 2. Esto se conoce como punteros dobles o Puntero a puntero.

¿Cómo declarar un puntero a un puntero en C++?

Declarar un puntero a puntero es similar a declarar un puntero en C++. La diferencia es que tenemos que usar uno extra * operador para el nombre de un puntero en C++.

Sintaxis de un puntero a puntero (puntero doble) en C++:

data_type_of_pointer **name_of_variable = & normal_pointer_variable;

Ejemplo:

valor int = 169;

int *ptr = &val; // dirección de almacenamiento de trampa a puntero ptr.

int **doble_ptr = &ptr; // puntero a un puntero declarado que hace referencia a un número entero.

El siguiente diagrama explica el concepto de punteros dobles:

¿Cómo funciona Doble Puntero?

El diagrama anterior muestra la representación de la memoria de un puntero a un puntero. El primer puntero ptr1 almacena la dirección de la variable y el segundo puntero ptr2 almacena la dirección del primer puntero.

Ejemplo: ¿Cómo funciona Double Pointer?

A continuación se muestra el programa C ++ para implementar Pointer to Pointer:

C++

#include <bits/stdc++.h>

using namespace std;

 

int main()

{

  int variable = 169;

   

  

  

  int* pointer1;

 

  

  

  int** pointer2;

 

  

  

  pointer1 = &variable;

 

  

  

  pointer2 = &pointer1;

 

  

  

  

  cout << "Value of variable :- " << 

           variable << "n";

  cout << "Value of variable using single pointer :- " << 

           *pointer1 << "n";

  cout << "Value of variable using double pointer :- " << 

           **pointer2 << "n";

  return 0;

}

Salida

Value of variable :- 169
Value of variable using single pointer :- 169
Value of variable using double pointer :- 169

¿Qué es el tamaño de puntero a puntero en C++?

En el lenguaje de programación C++, el puntero doble se comporta de la misma manera que un puntero normal. Por lo tanto, el tamaño de la variable de doble puntero y el tamaño de la variable de puntero normal son siempre iguales.

A continuación se muestra un programa en C++ para comprobar el tamaño de un puntero doble:

C++

#include <bits/stdc++.h>

using namespace std;

 

int main()

{

  int val = 169;

  int* ptr = &val;

  int** double_ptr = &ptr;

 

  cout << " Size of normal Pointer: " << 

            sizeof(ptr) << "n";

  cout << " Size of double Pointer: " << 

            sizeof(double_ptr) << "n";

  return 0;

}

Salida

 Size of normal Pointer: 8
 Size of double Pointer: 8

Observación: La salida del código anterior también depende del tipo de máquina utilizada. El tamaño de un puntero no está fijado en el lenguaje de programación C++ y depende completamente de otros factores, como la arquitectura de la CPU y el sistema operativo utilizado. Normalmente, para un sistema operativo de 64 bits, se asigna una memoria de 8 bytes y para un sistema operativo de 32 bits, se asigna una memoria de 4 bytes.

Su Calificación Nos Ayuda a Mejorar