¿Cómo funciona Pointer To Pointer en C?

¿Cómo funciona Pointer To Pointer en C?
Los punteros son una parte crucial de la programación C que le facilita la manipulación de los datos y la memoria de una manera más prominente. Sin embargo, el caso puede llegar cuando necesite manipular un puntero mismo y aquí es donde puntero al puntero entrará en el negocio.

Este artículo discute el funcionamiento del puntero al puntero en el lenguaje de programación C.

Antes de dirigirte hacia cómo puntero al puntero funciona, primero discutamos qué es puntero al puntero.

¿Cuál es el puntero al puntero?

Un puntero es una variable utilizada para almacenar otra dirección de memoria variable. Mientras que un puntero al puntero, también conocido como el doble puntero es un puntero que se utiliza para almacenar la dirección de memoria de otro puntero.

Sintaxis general para usar el puntero al puntero en c

La siguiente es la sintaxis para usar un puntero al puntero en la programación C.

data_type ** variable_name

El puntero al puntero La variable debe definirse agregando dos asteriscos a su nombre. Por ejemplo, la siguiente declaración declara un puntero a Pointer of Int DataType.

int ** var;

¿Cómo funciona Pointer To Pointer en C?

A puntero al puntero actúa de manera similar a un puntero ordinario, excepto que modifica el valor real asociado con el puntero al que señala. Para decirlo de otra manera, la dirección de memoria mantenida en un puntero ordinario es capaz de ser cambiado. Consideremos un ejemplo simple:

int n = 10;
int *pPtr1 = & n;
int ** pptr2 = &pptr1;

En el código anterior, tenemos una variable int que almacena un valor entero. También tenemos un puntero llamado "PPTR1" que almacena la dirección de memoria de la variable norte. Después de eso, el "PPTR2" se usa que almacena la dirección de memoria del puntero PPTR1.

Ahora, si desea acceder a los valores de norte, Solo necesitas desreferir el puntero dos veces. En la primera referencia, obtendrá la dirección de memoria de "PPTR1", mientras que en el segundo, obtendrás el valor de norte. Ahora puede obtener el valor usando el "Printf ()" función.

Aquí hay un código completo para usar Pointer to Pointer en la programación C.

#incluir
int main ()
int n = 10;
int *pPtr1 = & n;
int ** pptr2 = &pptr1;
printf ("Valor de N usando PPTR2: %D \ n", ** PPTR2);
regresar 0;

Producción

También podemos asignar memoria para una variable de puntero en una función separada y luego aplicar ese puntero en la función de llamadas. El ejemplo dado demuestra cómo hacer esto.

#incluir
#incluir
#incluir
Void Memory_allocation (char ** my_ptr)

* my_ptr = (char *) malloc (10 * sizeOf (char));

int main ()

char *w;
Memory_allocation (& w);
strcpy (w, "linuxhint");
printf ("%s \ n", w);
gratis (w);
regresar 0;

En el programa anterior, el "asignación de memoria" la función asignó la memoria a PTR_1. El PTR_1 actúa como un doble puntero y almacena una cadena llamada "Linuxhint" que se imprime en la pantalla.

Producción

Conclusión

El puntero al puntero es un concepto útil en el lenguaje de programación C que le permite acceder indirectamente a un valor variable a través de múltiples capas de puntería. Con la ayuda de puntero al puntero, puedes manipular un puntero por sí mismo. Las pautas mencionadas anteriormente lo ayudan a usar puntero al puntero en la programación C, ya que también incluye algunos ejemplos básicos que ayudan a comprender el concepto básico detrás de puntero al puntero.