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.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Génial!
Completion taux amélioré à 9.09
Pointer to Pointer
Glissez pour afficher le menu
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.
Merci pour vos commentaires !