Pointer to Pointer
Sometimes you do not just want to change a value, you want to change it through another pointer. That is where a pointer to pointer comes in. Think of it like this:
int xholds a number;int *pholds the address ofx;int **ppholds the address ofp.
So the chain looks like:
pp → p → x → value
To reach the real value, you must dereference twice.
main.c
12345678910111213141516#include <stdio.h> void set_to_ten(int **pp) { **pp = 10; } int main() { int x = 5; int *p = &x; int **pp = &p; set_to_ten(pp); printf("%d\n", x); // prints 10 return 0; }
So basically you are setting the original variable x to 10 through two pointer levels. This is exactly what you need for the multi-level pointer task.
Pointer-to-pointer logic is most useful when a function must modify data that is already accessed through a pointer. If you forget one * when dereferencing, the program will compile but update the wrong level, so always double-check how many pointer layers you are working with.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 9.09
Pointer to Pointer
Desliza para mostrar el menú
Sometimes you do not just want to change a value, you want to change it through another pointer. That is where a pointer to pointer comes in. Think of it like this:
int xholds a number;int *pholds the address ofx;int **ppholds the address ofp.
So the chain looks like:
pp → p → x → value
To reach the real value, you must dereference twice.
main.c
12345678910111213141516#include <stdio.h> void set_to_ten(int **pp) { **pp = 10; } int main() { int x = 5; int *p = &x; int **pp = &p; set_to_ten(pp); printf("%d\n", x); // prints 10 return 0; }
So basically you are setting the original variable x to 10 through two pointer levels. This is exactly what you need for the multi-level pointer task.
Pointer-to-pointer logic is most useful when a function must modify data that is already accessed through a pointer. If you forget one * when dereferencing, the program will compile but update the wrong level, so always double-check how many pointer layers you are working with.
¡Gracias por tus comentarios!