Puntero a puntero (Doble puntero) en el lenguaje de programación C

Un puntero variable almacena la dirección de una variable (que debe ser de tipo no-puntos), pero cuando necesitamos almacenar la dirección de cualquier variable puntero, necesitamos un tipo especial de puntero conocido como “puntero a puntero” o “puntero double” .

Así , double puntero (puntero a puntero) es una variable que puede almacenar la dirección de una variable puntero .

Leer: Reglas de puntero en lenguaje de programación C.

Declaración de un puntero a puntero (double puntero) en C

Cuando declaramos una variable puntero que tenemos que utilizar dereferencing operador (asterisco), de manera similar, para declarar puntero a puntero, tenemos que utilizar dos asteriscos antes de que el identificador (nombre de la variable).

Aquí está un ejemplo

int **ptr;

Aquí , ptr es un puntero a puntero (puntero double); que puede almacenar la dirección de tan sólo una variable puntero.

Nota: no podemos inicializar un puntero double con la dirección de la variable normal; double puntero se puede inicializar con la dirección de tan sólo una variable puntero.

inicialización de un puntero a puntero (double puntero) en C

Podemos inicializar un puntero double el uso de dos maneras:

1) inicialización con la declaración

data_type **double_pointer_name= & pointer_name;

2) de inicialización después de la Declaración

data_type **doble_pointer_name;
double_pointer_name = & pointer_name;

Considere el ejemplo dado

#include <stdio.h>
int main()
{
int a=10; //normal variable
int *ptr_a; //pointer variable
//pointer initialization with the
//address of a (normal variable)
ptr_a = &a;
int **ptr_ptra; //pointer to pointer
//pointer to pointer initialization with the
//address of ptr_a (pointer variable)
ptr_ptra = &ptr_a;
printf("value of a: %dn",a);
printf("value of a using pointer: %dn",*ptr_a);
printf("value of a using pointer to pointer: %dn",**ptr_ptra);
return 0;
}

salida

value of a: 10
value of a using pointer: 10
value of a using pointer to pointer: 10


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *