C Puntero a puntero

C 指针C punteros

Un puntero a puntero es una forma de indirección multinivel, o una cadena de punteros. Normalmente, un puntero contiene la dirección de una variable. Cuando definimos un puntero a puntero, el primer puntero contiene la dirección del segundo puntero, y el segundo puntero apunta a la ubicación que contiene el valor real.

C 中指向指针的指针

Una variable puntero a puntero debe declararse de la siguiente manera, es decir, colocando dos asteriscos antes del nombre de la variable. Por ejemplo, lo siguiente declara un puntero a un puntero de tipo int:

int **var;

Cuando un valor objetivo es apuntado indirectamente por un puntero a otro puntero, para acceder a este valor se necesitan dos operadores de asterisco, como se muestra en el siguiente ejemplo:

Ejemplo

#include <stdio.h> int main () { int V; int *Pt1; int **Pt2; V = 100; /*Obtener la dirección de V*/ Pt1 = &V; /*Usar el operador & para obtener la dirección de Pt1*/ Pt2 = &Pt1; /*Usar pptr para obtener el valor*/ printf("var = %d\n", V ); printf("Pt1 = %p\n", Pt1 ); printf("*Pt1 = %d\n", *Pt1 ); printf("Pt2 = %p\n", Pt2 ); printf("**Pt2 = %d\n", **Pt2); return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

var = 100
Pt1 = 0x7ffee2d5e8d8
*Pt1 = 100
Pt2 = 0x7ffee2d5e8d0
**Pt2 = 100

C 指针C punteros

Otras extensiones